3

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

Web 部署项目会自动生成网站的并行“部署”版本,其中所有代码都被剥离并编译到单个程序集中。我的文件结构是:

  • 树干
  • Trunk/MyProject(网站根目录)
  • Trunk/MyProject_deploy(部署项目根)
  • Trunk/MyProject_deploy/Release(部署网站根目录,自动生成)

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

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

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

4

3 回答 3

14

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

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

于 2009-04-24T18:35:52.377 回答
1

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

于 2009-04-24T18:34:14.207 回答
1

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

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

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

于 2009-11-22T12:54:42.927 回答