CI with SHFB and Subversion

Dec 17, 2007 at 9:20 PM
Hi

I'm trying to setup a continuous integration process that includes using Sandcastle and SHFB to compile .chm help file. I've succeeded in getting everything working through the SHFB GUI. One of the tenants that I try to follow is to check everything into source control (Subversion) - including the tools I use. This allows me to at any time setup a clean machine by simply getting the latest version from the repository. I therefore added Sandcastle and SHFB to a Tools folder. I changed the Sandcastle folder setting in the SHFB to look for Sandcastle from this directory and everything works fine. However, there is a problem in that we the chm file is now created, the .svn folders for the different folders that contain the Sandcastle presentation styles are also copied over by SHFB. The build then fails trying to merge these into the .chm file.

Is there some way around this? Is it possible to tell SHFB to ignore the .svn folders and their content? If not, any other ideas? Here is a snippet out of the log file:

{...
Generating HTML Help 1.x index file...
C:\Development\Projects\VStudio 2008\LegitToCommit\Docs\Help\Working\Generate1xIndex.bat
XslTransform (v2.3.8000.26)
Copyright c Microsoft 2005-2006
Info: Applying XSL transformation 'C:\Development\Projects\VStudio 2008\LegitToCommit\Tools\Sandcastle\ProductionTransforms\ReflectionToChmIndex.xsl'.
Last step completed in 00:00:00.3594
-------------------------------
Generating HTML Help 1.x project file...
Last step completed in 00:00:00.2188
-------------------------------
Compiling HTML Help 1.x file...
C:\Development\Projects\VStudio 2008\LegitToCommit\Docs\Help\Working\Build1xHelpFile.bat
Microsoft HTML Help Compiler 4.74.8702



Compiling c:\Development\Projects\VStudio 2008\LegitToCommit\Docs\Help\Working\Output\LegitToCommit.chm



HHC5003: Error: Compilation failed while compiling styles\entries.

HHC5003: Error: Compilation failed while compiling styles\format.

HHC5003: Error: Compilation failed while compiling scripts\entries.

HHC5003: Error: Compilation failed while compiling scripts\format.

HHC5003: Error: Compilation failed while compiling icons\entries.

HHC5003: Error: Compilation failed while compiling icons\format.

HHC5003: Error: Compilation failed while compiling icons\props\alert_caution.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\alert_note.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\alert_security.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\Caution.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\CFW.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\collapse_all.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\copycode.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\expand_all.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\LastChild.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\NotLastChild.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privclass.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privdelegate.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privenum.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privevent.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privfield.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privinterface.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privmethod.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privproperty.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\privstructure.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protclass.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protdelegate.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protenum.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protevent.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protfield.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protfield.png.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protinterface.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protmethod.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protoperator.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protproperty.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\protstructure.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubclass.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubdelegate.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubenum.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubevent.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubfield.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubinterface.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubmethod.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\puboperator.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubproperty.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\pubstructure.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\security.gif.svn-work.

HHC5003: Error: Compilation failed while compiling icons\props\static.gif.svn-work.





The following files were not compiled:

styles\entries

styles\format

scripts\entries

scripts\format

icons\entries

icons\format

icons\props\alert_caution.gif.svn-work

icons\props\alert_note.gif.svn-work

icons\props\alert_security.gif.svn-work

icons\props\Caution.gif.svn-work

icons\props\CFW.gif.svn-work

icons\props\collapse_all.gif.svn-work

icons\props\copycode.gif.svn-work

icons\props\expand_all.gif.svn-work

icons\props\LastChild.gif.svn-work

icons\props\NotLastChild.gif.svn-work

icons\props\privclass.gif.svn-work

icons\props\privdelegate.gif.svn-work

icons\props\privenum.gif.svn-work

icons\props\privevent.gif.svn-work

icons\props\privfield.gif.svn-work

icons\props\privinterface.gif.svn-work

icons\props\privmethod.gif.svn-work

icons\props\privproperty.gif.svn-work

icons\props\privstructure.gif.svn-work

icons\props\protclass.gif.svn-work

icons\props\protdelegate.gif.svn-work

icons\props\protenum.gif.svn-work

icons\props\protevent.gif.svn-work

icons\props\protfield.gif.svn-work

icons\props\protfield.png.svn-work

icons\props\protinterface.gif.svn-work

icons\props\protmethod.gif.svn-work

icons\props\protoperator.gif.svn-work

icons\props\protproperty.gif.svn-work

icons\props\protstructure.gif.svn-work

icons\props\pubclass.gif.svn-work

icons\props\pubdelegate.gif.svn-work

icons\props\pubenum.gif.svn-work

icons\props\pubevent.gif.svn-work

icons\props\pubfield.gif.svn-work

icons\props\pubinterface.gif.svn-work

icons\props\pubmethod.gif.svn-work

icons\props\puboperator.gif.svn-work

icons\props\pubproperty.gif.svn-work

icons\props\pubstructure.gif.svn-work

icons\props\security.gif.svn-work

icons\props\static.gif.svn-work

Last step completed in 00:00:04.4844


BUILD FAILED: Unexpected error in last build step. See output above for details.}


Coordinator
Dec 18, 2007 at 1:47 AM
If it were additional content you could add an entry to have it ignore the SVN directories. Since this is in the Sandcastle content, there isn't a way to do it. Your best bet is to use a copy of Sandcastle that isn't under source control and does not contain those folders.

Eric
Coordinator
Dec 18, 2007 at 3:14 PM
A work item was just posted related to a prior change about removing SVN folders which I'd forgotten about. I think I can apply a similar concept to copying files and just ignore hidden + read only folders.

Eric
Dec 18, 2007 at 5:56 PM

EWoodruff wrote:
A work item was just posted related to a prior change about removing SVN folders which I'd forgotten about. I think I can apply a similar concept to copying files and just ignore hidden + read only folders.

Eric



Great! That will solve the problem. I created a workaround by adding a zip archive to the tools folder containing the Sandcastle content (including the PresentationPatches). At build time the archive is extracted to a Sandcastle folder beneath the tools folder and SFHBuilder uses this folder as the path to where Sandcastle is located. Works fine but it would be great it the hidden folders got be ignored in the copy which would allow me to add the Sandcastle folder to Subversion itself. I also had a look at the MSBuild file that ships with Sandcastle. It would be possible to exclude the .svn items in there, but I assume SFHB doesn't use the MSBuild file.

Thanks
Carel