xcopy ASP.NET deployment of a Subversion-managed p

2020-03-24 08:48发布

问题:

I'm currently using Subversion to manage my ASP.NET website. I'm finding that whenever I go to upload my website to my server, I'm copying a large number of hidden .svn folders and whatever contents may lie within them.

Does anyone have any suggestions for avoiding this? I don't particularly want those hidden .svn folders on the production server, but short of manually deleting each .svn folder before I upload my website, I'm at a loss for how to have a .svn-folder-free production environment.


Edit: Thank you everyone, those are great suggestions, I really appreciate it!

回答1:

How about you run Subversion on the server and then do an svn export from the repository? svn export is like a checkout, but w/o the .svn folders (and w/o the ability to do Subversion work in that directory).

Alternately, do a svn export of the repo on your local machine and then FTP up the exported version.



回答2:

  1. You should use export command of the subversion.
  2. You may tweak registry and add a "Delete SVN Folders" to the context menu for folders. Here is an example script from http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx Save it to a .reg file and execute.

Right click on your project folder and delete all .svn folders recursively.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""


回答3:

two suggestions:

  • Use robocopy or xcopy to filter out the .svn folders
  • svn export the repository to the webserver (docs). Exporting will not write any .svn folders

see also: Tortoise SVN hidden SVN folders



回答4:

I have a postbuild step, which prepares a clean drop folder as part of the project build. Here's how I do it:

  <PropertyGroup>
    <DropPath>..\..\drop\</DropPath>
    <TestDropPath>..\..\test\</TestDropPath>
  </PropertyGroup>
  <Target Name="AfterBuild">
    <ItemGroup>
      <Binaries Include="$(OutputPath)**\*.*" />
    </ItemGroup>
    <ConvertToAbsolutePath Paths="$(DropPath)">
      <Output TaskParameter="AbsolutePaths" ItemName="FullDropPath" />
    </ConvertToAbsolutePath>
    <Message Importance="High" Text="Binplacing -&gt; @(FullDropPath)" />
    <Copy SourceFiles="@(Compile)" DestinationFiles="@(Compile->'$(DropPath)%(Identity)')" />
    <Copy SourceFiles="@(Content)" DestinationFiles="@(Content->'$(DropPath)%(Identity)')" />
    <Copy SourceFiles="@(EntityDeploy)" DestinationFiles="@(EntityDeploy->'$(DropPath)%(Identity)')" />
    <Copy SourceFiles="@(Binaries)" DestinationFiles="@(Binaries->'$(DropPath)%(Identity)')" />
  </Target>

Of course, svn export works as well. :-) However, with that approach you can't modify and commit back to the repository any source file modified during the build.



标签: asp.net svn