我们使用 CruiseControl.Net/NAnt/Subversion 堆栈进行 CI。对每个构建进行全新的检查太耗时,因此目前我们只对工作副本进行更新。但是,这使得孤立文件在源代码管理中删除后可能仍保留在工作副本中。我们尝试使用 NAnt 删除任务在更新之前删除所有代码源文件,但这可能会损坏工作副本。有谁知道在干净且最新的工作副本上运行构建的快速方法?编辑:我们使用的是 SVN 1.3.2

有帮助吗?

解决方案

如果您只是“更新”,SVN 将删除源代码管理中已删除的所有文件。但是,在构建过程中创建的文件可能仍然存在,并且可能会干扰新的构建。我不确定 SVN 是否有删除它们的命令,但我想你可以用一个小脚本来做到这一点,SVN 肯定可以告诉你哪些文件在源代码控制下,哪些不是。

其他提示

我们的 CC 实施也遇到了类似的问题。

我们的解决方案...我们已经制作了一个每晚凌晨 3:00 的构建,除了基本单元测试之外,它还执行更长时间运行的集成测试。我们只是决定在凌晨 3:00 在新鲜的树上构建一个完全干净的构建。由于是半夜,所以很少影响到任何人。所有其他“正常”签入都运行增量构建。

如果完成 svn 更新后,您的工作副本中留下了孤立的文件,那么您的 Subversion 版本中存在错误。

您可以进行每日完整构建,并按原样保留签入时的构建。此外,对于部署构建,始终使用干净的完整构建可能是一个好主意。

我能想到的唯一方法是在构建服务器上有两个副本。首先,您更新第一个位置。您删除第二个位置。将第一个复制到第二个,然后在第二个位置构建。这样你就总是从一个干净的构建开始。

您可能想了解一下为什么结账时间这么长。我使用了相同的构建服务器堆栈并且从未遇到过问题。Subversion 通常比构建本身花费的时间要少。

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