13

当我需要将 Web 解决方案上传到服务器时,它们特别烦人。

有没有办法配置 SVN 在我的工作目录之外创建 _svn 文件夹?如果没有,当您只需要复制代码时,处理它们的最佳方法是什么?

更新:使用“svn export”命令是有问题的,因为有些文件不受源代码控制但必需的文件,如 .dll、xml 数据文件或数据库文件,它们不会被导出。因此,每次都需要手动将它们复制到工作副本的不同子目录中。

4

9 回答 9

26

(目前)不可能配置 SVN(或 TortoiseSVN)在工作副本之外创建 .svn(或 _svn)目录。我相信 SVN 1.6 路线图包括重新访问工作副本库。将管理目录放在其他地方的能力可能来自这项工作,但我在推测。

您应该使用“svn export”命令来创建工作副本的“干净”副本(即没有_svn 目录)。这适用于命令行客户端。

如果您使用的是 TortoiseSVN,您可以右键单击工作副本,然后选择“导出...”。这将要求您提供将文件导出到的文件夹。或者,您可以将工作副本右键拖动到文件夹(不是工作副本的文件夹),TortoiseSVN 会弹出一个上下文菜单;选项中有“SVN 导出到这里”和“SVN 全部导出到这里”,后者也导出不受版本控制的文件

于 2008-10-21T15:03:22.553 回答
17

使用“svn export”创建一个干净的目录树。

于 2008-10-21T14:58:11.347 回答
12

Robocopy部署...

robocopy {source} {dest} /MIR /XD _svn /XD .svn
于 2008-10-21T15:45:23.997 回答
4

在 TortoiseSVN 中,您可以右键单击工作副本并将其拖动到其他位置。当弹出菜单出现时,选择“SVN Export Here”。(这要求工作副本中的所有代码都已签入,因为导出将来自主干而不是工作副本)

有关详细信息,请参阅这些资源:

于 2008-10-21T15:28:54.483 回答
3

如果您使用 nant 脚本启用到 Web 服务器的部署,它具有 _SVN 和 _SVN/** 作为复制文件时的自动排除。nant 在通过其复制任务复制文件时会过滤掉大量不需要的文件,包括:

  • **/*~
  • **/#*#
  • **/.#*
  • **/%*%
  • **/CVS
  • /CVS/
  • **/.cvsignore
  • **/.svn
  • /.svn/
  • **/_svn
  • /_svn/
  • **/SCCS
  • /SCCS/
  • **/vssver.scc
  • /_vti_cnf/

您可以在此处的项目主页上阅读有关 NANT 的更多信息:NANT Home

于 2008-10-21T15:22:23.467 回答
2

Isak Savo 的解决方案 +1。

您可以执行 XCOPY 并排除“/svn”文件夹:

XCOPY %1 %1_deploy /EXCLUDE:C:\ExcludeSVN.txt /E /C /I /F /R /Y

ExcludeSVN.txt 的内容:

/_svn

事实上,如果你想上传到 web 服务器,你的排除文件可以包含更多:

  • .pdb
  • 。CS
  • .resx
  • .csproj
  • .sln
  • .webinfo
  • .bak
  • .sql
  • 。压缩
  • .vspscc
  • .vsscc
  • .scc
  • \Web.config

警告:如果您排除 .cs 文件,您必须在之后重新复制 .css 文件

于 2008-10-21T15:34:56.797 回答
1

Windows 中真正肮脏的方法:创建项目的副本,打开资源管理器,导航到副本所在的目录,然后查找以 _svn 结尾的所有内容。搜索完成后,全选并点击删除。

呸!但它真的很好用。

于 2008-10-21T15:20:19.603 回答
0

我们使用 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 的更多信息。

于 2008-10-21T15:47:33.697 回答
0

如果要删除 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,以免意外产生不良影响。

于 2012-11-25T15:50:05.793 回答