CruiseControl.net和svn checkout

时间:2009-03-12 18:53:08

标签: svn cruisecontrol.net

我能够使用svn进行巡航控制。我想要做的是,当cruisecontrol检测到存储库中的更改时,它会删除工作目录中的所有内容,然后再次检出整个项目。我不知道怎么能这样做。似乎cruisecontrol会在存储库中存在并更新时自动更新工作目录,但在更新目录之前它不会删除额外的文件(如bin文件)。

由于

3 个答案:

答案 0 :(得分:2)

在ccnet.config文件中,源控件块是否包含cleanCopy项? 要删除工作目录中的所有内容,请确保将cleanCopy设置为“true”

希望这有帮助。

答案 1 :(得分:0)

我不知道SVN是否像TFS一样工作(它有一个缓存等等......),但这是我用CC.NET和Sourcesafe执行此操作的方法:

在我项目的预建部分,我确保清理工作目录,即:删除其中的所有内容。
(预构建部分中包含的任务将在CC.NET从源代码控制中获取项目的最新版本之前执行。)

为了实现这一点,我调用了我的buildscript(msbuild)中定义的一个名为'clean'的目标。

此目标将删除所有文件和目录。

这或多或少是我的msbuild buildcript中的任务看起来像(心里,我没有在这里跟我一起):

<Task name="clean">
   <ItemGroup>
       <FilesToDelete include="$(workingdir)\**\*.*" />
   </ItemGroup>
   <ItemGroup>
        <DirectoriesToDelete include="$(workingdir)\**" />
   </ItemGroup>
   <Delete Files="@(FilesToDelete)" />
   <RemoveDir Directories="@(DirectoriesToDelete)" />
</Task>

然后,在CC.NET项目配置中,我使用MSBuild任务调用MSBuild脚本,然后调用此目标。

我喜欢这个,就是我可以很容易地清理工作站上的工作目录;我只需要在命令行上调用msbuild来调用这个目标,我的工作目录是空的。 我也有类似的任务来执行getlatest,完整构建等等。

答案 2 :(得分:0)

您可以让构建脚本首先删除bin目录,然后编译项目。创建一个名为“clean”的构建任务,删除已编译的输出文件夹,然后将任务“mainBuild”设置为依赖于“clean”。如果所有内容都编译为公共输出文件夹,则创建“干净”任务会更容易。

无论是设置ccnet.config来清理工作副本,还是添加构建任务来清理工作副本都是首选。