SCM IntegrationNAntContrib supports Microsoft Visual Source Safe (http://msdn.microsoft.com/ssafe/), CVS (http://www.cvshome.org/), VAULT (http://www.sourcegear.com/vault/index.asp), Star Team (http://www.borland.com/starteam/), and Perforce (http://www.perforce.com). In extending NAnt later in this chapter, we will add subversion (http://subversion.tigris.org/) support. This integration allows your build to check files in and out of source control and label the repository. This is useful for automatically checking in and labeling a successful build. Depending on your SCM structure, NAnt can be useful in checking out only the specific code needed. If there are large, time-consuming projects in SCM that are not needed, it is worthwhile to have the build check out specific paths in SCM rather than checking out a base project recursively. Listing 4.9 is an example of checking out projects from Visual Source Safe (VSS): Listing 4.9. Using Visual Source Safe Integration<target name='get'> <vssget localpath="${3rdparty}\Genghis" recursive="true" dbpath="${ssdir}" user="${ssuser}" password="${sspassword}" replace="true" path="$/3rd_party/Genghis" writable="true"/> <vssget localpath="${3rdparty}\Logkit_net" recursive="true" dbpath="${ssdir}" user="${ssuser}" password="${sspassword}" replace="true" path="$/3rd_party/Logkit_net" writable="true"/> <vssget localpath="${software}" recursive="true" dbpath="${ssdir}" user="${ssuser}" password="${sspassword}" replace="true" path="$/clarity" writable="true"/> </target> Listing 4.9 shows the NAnt get task recursively getting everything under the software directory but only what it needs (Genghis and LogKit.NET) from the many available projects under 3rdparty. This greatly shortens the amount of time required to retrieve the code from SCM and therefore shortens the entire build time. |