当我需要上传一个网页解决方案到服务器时,它们特别令人讨厌。
有没有一种方法可以配置SVN,使_svn文件夹在我的工作目录之外? 如果没有,那么在只需要复制代码时如何处理它们是最好的方式?
更新:使用“svn export”命令存在问题,因为有些文件不在源代码控制下,但很重要,例如.dll文件、xml数据文件或数据库文件,这些文件不会被导出。因此,每次都需要从工作副本手动将它们复制到不同的子目录中。
当我需要上传一个网页解决方案到服务器时,它们特别令人讨厌。
有没有一种方法可以配置SVN,使_svn文件夹在我的工作目录之外? 如果没有,那么在只需要复制代码时如何处理它们是最好的方式?
更新:使用“svn export”命令存在问题,因为有些文件不在源代码控制下,但很重要,例如.dll文件、xml数据文件或数据库文件,这些文件不会被导出。因此,每次都需要从工作副本手动将它们复制到不同的子目录中。
目前无法配置SVN(或TortoiseSVN)使其在工作副本之外创建 .svn (或 _svn )目录。我相信 SVN1.6 路线图包括重新审视工作副本库。将管理目录放置在其他地方的能力可能会从这项工作中出现,但我只是在猜测。
您应该使用 “svn export” 命令来创建“干净”的工作副本副本(即不包含 _svn 目录)。此命令可从命令行客户端执行。
如果您使用的是TortoiseSVN,则可以右键单击工作副本,然后选择“导出…”。这将要求您选择导出文件的文件夹。或者,您可以右键拖动工作副本到一个文件夹(不是工作副本),然后 TortoiseSVN 将弹出上下文菜单;其中选项包括“SVN导出到此处”和“SVN全部导出到此处”,后者还会导出未受版本控制的文件。
使用 "svn export" 命令创建一个干净的目录结构。
对于来自Isak Savo的解决方案,我给予+1的支持。
您可以执行XCOPY并排除“/svn”文件夹:
XCOPY %1 %1_deploy /EXCLUDE:C:\ExcludeSVN.txt /E /C /I /F /R /Y
ExcludeSVN.txt的内容:
/_svn
实际上,如果您想上传到Web服务器,则您的排除文件可能包含更多内容:
警告:如果您排除.cs文件,则必须在之后重新复制.css文件。
如果你想在Windows中删除所有名为.svn的子文件夹 那么可以创建一个批处理文件,内容如下:
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)
将其保存在文件del_All_Dot_SVN_Folders.cmd中。运行它。完成。
感谢http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/
请记住,上述代码具有 .svn,而链接中的代码仅具有 *svn,因此最好使用 .svn 以避免意外产生不良影响。
我们使用CruiseControl和robocopy来创建您的代码库的干净副本。
<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和/XD参数可以排除您不想上传到生产环境的文件和目录。
您可以在这里找到有关robocopy的更多信息。