如何让Subversion与自动生成的文件一起使用?

时间:2009-04-24 18:29:58

标签: svn tortoisesvn visualsvn web-deployment-project

我正在使用带有TortoiseSVN和VisualSVN的ASP.NET Web部署项目,但这是关于Subversion中生成的文件的一般性问题。

Web部署项目会自动生成您网站的并行“部署”版本,并删除所有代码并将其编译为单个程序集。我的文件结构是:

  • 中继线
  • Trunk / MyProject (网站根目录)
  • Trunk / MyProject_deploy (部署项目根目录)
  • Trunk / MyProject_deploy / Release (部署网站root,自动生成)

问题在于: MyProject_deploy / Release 在构建时重新生成(在发布模式下)。该目录被删除并重新创建,因此我丢失了所有.svn元数据;当我去提交时,我得到状态“Obstructed”,我已查找并且意味着有一个非托管本地文件夹与服务器上的托管文件夹同名。

(我可以忽略Release文件夹,但我想直接从Subversion服务器进行FTP部署。)

在Subversion中处理自动生成文件的最佳方法是什么?

3 个答案:

答案 0 :(得分:14)

设置svn:ignore属性。不要将它们添加到版本控制系统。构建过程生成的任何内容都不属于那里。什么属于完成构建过程所需的东西。

我建议添加一个像CruiseControl.NET这样的连续集成服务器 - 它可以从源代码构建项目,然后从中进行部署。这将使您处于使用2个最佳实践而非1的位置,并仍然可以解决您的问题。

答案 1 :(得分:1)

如果您正在使用Visual Studio,您是否可以定义构建前和构建后事件,以便在构建之前将.svn目录(或多个目录)移出Release,然后再返回?

答案 2 :(得分:1)

使用安装项目创建Windows Installer输出时,这也是一个问题。

一个选项是更改输出文件名,以便将生成的文件转储到部署项目根目录中,而不是转储到名为“Release”的子文件夹中。

在安装项目的情况下,我正在生成一个单独的MSI文件,这很有效 - 没有文件夹被删除/重新创建,因此没有SVN错误,并且只有部署项目根目录中的两个文件很干净文件夹中。