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

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

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

有帮助吗?

解决方案

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

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

如果您使用的是TortoiseSVN,可以右键单击工作副本,然后选择“导出...”。这将要求您输入要导出文件的文件夹。或者,您可以将工作副本右键拖动到一个文件夹(一个不是工作副本),TortoiseSVN将打开一个上下文菜单;选项中包括“SVN Export to here”。和“SVN全部导出到此处”,后者还导出不受版本控制的文件

其他提示

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

Robocopy 部署......

robocopy {source} {dest} /MIR /XD _svn /XD .svn

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

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

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

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

您可以在其项目主页上阅读有关 NANT 的更多信息: 南特首页

Isak Savo 的解决方案+1。

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

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

排除SVN.txt的内容:

/_svn

事实上,如果您想上传到网络服务器,您的排除文件可以包含更多内容:

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

警告 :如果您排除 .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 /删除-所有 - svn的-文件-在窗口/

请记住,上面的代码有.svn,而链接中的代码只有* svn,所以它更好 让.svn不会意外地产生不良影响。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top