2008-10-22 108 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