当我需要将 Web 解决方案上传到服务器时,它们特别烦人。
有没有办法配置 SVN 在我的工作目录之外创建 _svn 文件夹?如果没有,当您只需要复制代码时,处理它们的最佳方法是什么?
更新:使用“svn export”命令是有问题的,因为有些文件不受源代码控制但必需的文件,如 .dll、xml 数据文件或数据库文件,它们不会被导出。因此,每次都需要手动将它们复制到工作副本的不同子目录中。
当我需要将 Web 解决方案上传到服务器时,它们特别烦人。
有没有办法配置 SVN 在我的工作目录之外创建 _svn 文件夹?如果没有,当您只需要复制代码时,处理它们的最佳方法是什么?
更新:使用“svn export”命令是有问题的,因为有些文件不受源代码控制但必需的文件,如 .dll、xml 数据文件或数据库文件,它们不会被导出。因此,每次都需要手动将它们复制到工作副本的不同子目录中。
(目前)不可能配置 SVN(或 TortoiseSVN)在工作副本之外创建 .svn(或 _svn)目录。我相信 SVN 1.6 路线图包括重新访问工作副本库。将管理目录放在其他地方的能力可能来自这项工作,但我在推测。
您应该使用“svn export”命令来创建工作副本的“干净”副本(即没有_svn 目录)。这适用于命令行客户端。
如果您使用的是 TortoiseSVN,您可以右键单击工作副本,然后选择“导出...”。这将要求您提供将文件导出到的文件夹。或者,您可以将工作副本右键拖动到文件夹(不是工作副本的文件夹),TortoiseSVN 会弹出一个上下文菜单;选项中有“SVN 导出到这里”和“SVN 全部导出到这里”,后者也导出不受版本控制的文件。
使用“svn export”创建一个干净的目录树。
Robocopy部署...
robocopy {source} {dest} /MIR /XD _svn /XD .svn
在 TortoiseSVN 中,您可以右键单击工作副本并将其拖动到其他位置。当弹出菜单出现时,选择“SVN Export Here”。(这要求工作副本中的所有代码都已签入,因为导出将来自主干而不是工作副本)
有关详细信息,请参阅这些资源:
如果您使用 nant 脚本启用到 Web 服务器的部署,它具有 _SVN 和 _SVN/** 作为复制文件时的自动排除。nant 在通过其复制任务复制文件时会过滤掉大量不需要的文件,包括:
您可以在此处的项目主页上阅读有关 NANT 的更多信息:NANT Home
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 结尾的所有内容。搜索完成后,全选并点击删除。
呸!但它真的很好用。
我们使用 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 的更多信息。
如果要删除 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,以免意外产生不良影响。