7

我目前正在设置工作中的持续集成环境。我们正在使用VisualSVN服务器和CrusieControl.NET。偶尔构建会失败,并且症状是CruiseControl.NET工作副本中存在冲突。我相信这是由于我设置了Visual Studio解决方案的方式。希望我们在这个环境中运行的项目越多,我们对如何设置它们的理解就越好,所以我并不质疑为什么在这个阶段发生冲突。为了修复版本,我删除了工作副本并强制执行一个新版本 - 每次(当前)都有效。所以我的问题是:删除工作副本是持续集成构建过程的有效部分,我该如何解决?预生成任务 - 删除CruiseControl.NET中的工作副本

我试过解决方案,包括MSTask和调用命令行删除,但我没有任何运气。

抱歉这么罗嗦 - 好工作,这是一个测试版:)

+0

Subversion的CleanCopy现在在版本1.4.1中实现。您只需在您的配置中将CleanCopy设置为true – Alex 2008-11-19 18:55:37

回答

9

在构建之前或之后进行完全删除是一种很好的做法。这意味着您的构建环境没有机会获取过时的文件。您的建筑物完全针对存储库中的内容。

删除工作副本是可能的,因为我已经用Nant做过了。

在南特我会有一个干净的脚本在自己的文件夹中,我想删除一个,然后从CC.net中调用它。

我认为这应该也可以使用批处理文件。看看rmdir命令http://www.computerhope.com/rmdirhlp.htm

@pauldoo

我喜欢我的CI服务器做一个完全删除,因为我不希望任何惊喜,当我去做一个发布版本,这应该总是做从一个干净的状态。但它应该能够处理两者,没有理由为什么不可以

0

这是很常见的,一般对于任何构建过程做任何显著构建之前做一个“干净”的一个很好的做法。这可以防止以前的构建中的任何“工件”污染输出。

清理本质上就是通过删除工作副本来完成的。

0

@Brad巴克

清洁手段,刚擦了构建产品。

删除工作副本会删除所有其他东西(源文件和项目文件等)。

一般来说,如果您的机器可以在不进行完全删除的情况下运行,那很好,因为这复制了一般开发人员的工作。它在更新期间发现的任何冲突都是对开发人员可以期望的事情的早期警告。


@jamie

正式版本是的,它是更好地做一个完全干净的检出。所以我想这取决于构建的目的。

2

@jamie:有一个原因,您可能无法在每次使用持续集成服务器时进行清理构建 - 构建时间。在我工作的一些项目中,清理版本需要80多分钟(一个由数千个C++文件组成的嵌入式项目,用于检出并针对多个目标进行编译)。在这种情况下,您必须权衡快速反馈的好处,以及干净构建会捕获增量构建不会构建的东西的可能性。在我们的案例中,我们致力于改进和平行构建过程,同时允许在CI机器上增量构建。我们确实遇到了一些问题,因为我们没有进行干净的构建,但通过每晚或每周做一次干净的构建,您可以消除风险,而不会丢失CI机器的快速反馈。

2

如果您检查CC.NET的jira有一个补丁签入来为Subversion实现CleanCopy,它完全符合您的要求,并且只需在您的源代码管理块中将CleanCopy设置为true,就像使用TFS一样。