2008-10-22 74 views
4

我目前使用Subversion来管理我的ASP.NET网站。我发现,无论何时我将我的网站上传到我的服务器,我都会复制大量隐藏的.svn文件夹以及其中可能存在的任何内容。xcopy Subversion托管项目的ASP.NET部署

有没有人有任何建议来避免这种情况?我并不特别需要生产服务器上隐藏的.svn文件夹,但在上传我的网站之前手动删除每个.svn文件夹的工作量很少,我不知道如何拥有.svn-folder-free生产环境。


编辑:谢谢大家,这些都是伟大的建议,我真的很感激它!

回答

2

你如何在服务器上运行Subversion,然后从存储库执行svn导出? svn导出就像结账一样,但没有.svn文件夹(并且无法在该目录中执行Subversion)。

或者,在本地计算机上执行svn导出回购,然后通过FTP导出导出版本。

2

我有一个postbuild一步,它准备一个干净的投递文件夹作为项目的一部分。以下是我的做法:

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

当然,svn export也适用。 :-)但是,使用这种方法,您无法修改并向构建期间修改的任何源文件提交回存储库。

4
  1. 你应该使用subversion的export命令。
  2. 您可以调整注册表并添加一个“删除SVN文件夹”到文件夹的上下文菜单。以下是来自http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx的示例脚本将其保存到.reg文件并执行。

右键单击您的项目文件夹,并递归删除所有.svn文件夹。

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\" \"" 
+0

这是一个很酷的reg黑客! – craigb 2008-10-22 04:07:13