Vault + CruiseControl.NET

If you are having a problem using Vault, post a message here.

Moderator: SourceGear

Post Reply
code
Posts: 19
Joined: Mon Jun 19, 2006 10:19 am

Vault + CruiseControl.NET

Post by code » Wed May 28, 2008 12:52 pm

Apologies if this message is not strictly classed as Vault support but if anyone can help me it would be greatly appreciated.

I have a CruiseControl.NET project that is pulling files from a Vault repository. I am getting the Path Too Long error on one of the files, which is causing the get latest to fail and hence the build.

Is there any way to skip folders from a get latest request that are included in the repository folder but are not needed for the build?

For example, my repository root looks like:

$/Project/Trunk
--- Database
--- Solution
------ App1
------ App2
------ App3
--- Tools

Could I configure the CruiseControl.NET source control block so, upon getting the latest source from $/Project/Trunk into an empty folder, it can skip the Database sub folder?

Like I say, any assistance would be greatly appreciated.

Many thanks,

Tim

code
Posts: 19
Joined: Mon Jun 19, 2006 10:19 am

Post by code » Wed May 28, 2008 1:08 pm

Sorry, this is the exception in case it adds any further information:

Code: Select all

System.IO.PathTooLongException: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
 at System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
 at System.IO.Path.GetDirectoryName(String path)
 at VaultClientOperationsLib.ClientInstance.ProcessFile_NonWorkingFolder(String tempFile, VaultClientFile file, VaultResponseGetFile response, String ancestorFullPath, String ancestorDiskPath, SetFileTimeType setFileTime, MakeWritableType makeWritable, MergeType merge, OverwritePrompt PromptData)
 at VaultClientOperationsLib.ClientInstance.ProcessGetFileRequests(GetFileInfo[] infos, MakeWritableType makeWritable, SetFileTimeType setFileTime, MergeType merge, Boolean updateHiddenFilesOnly, String ancestorFullPath, Boolean flat, String ancestorDiskPath, OverwritePrompt PromptData, Boolean isLabelGet, String currentPathToLabelItem, Int64 labelID, Boolean isRetry, Boolean isGetByDisplayVersion)
 at VaultClientOperationsLib.ClientInstance.GetByDisplayVersionToNonWorkingFolder(VaultClientFile[] files, MakeWritableType makeWritable, SetFileTimeType setFileTime, String ancestorFullPath, String ancestorDiskPath, OverwritePrompt PromptData)
 at VaultClientOperationsLib.ClientInstance.GetByDisplayVersionToNonWorkingFolder(VaultClientFolder folder, Boolean recursive, MakeWritableType makeWritable, SetFileTimeType setFileTime, String ancestorDiskPath, OverwritePrompt PromptData)
 at VaultClientIntegrationLib.GetOperations.performGetVersion(String objectPath, Int32 version, String strDestFolder, GetOptions getOptions)
 at VaultClientIntegrationLib.GetOperations.ProcessCommandGetVersionToLocationOutsideWorkingFolder(String objectPath, Int32 version, GetOptions getOptions, String destPath)
 at VaultCmdLineClient.VaultCmdLineClient.ProcessCommand(Args curArg)
 at VaultCmdLineClient.VaultCmdLineClient.Main(String[] args)

I spotted it was thrown from processing a non working folder.

This is the command line that CruiseControl.NET generated:

Code: Select all

Starting process [C:\Program Files\SourceGear\Vault Client\vault.exe] in working directory [D:\CruiseControl.NET.Working\Solutions\Project\Trunk\Working] with arguments [getversion 1590 $/Project/Trunk/ D:\CruiseControl.NET.Working\Solutions\Project\Trunk\Working -merge overwrite -makewritable -backup no -setfiletime checkin -host #host# -user #user# -password #password# -repository #Repository#]

Thanks again!

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Wed May 28, 2008 4:13 pm

Is there any way to skip folders from a get latest request that are included in the repository folder but are not needed for the build?
You could try cloaking them, then they should be ignored during Gets that are done at a folder level. To get on the file then, you would have to directly select it.

Your other option is to shorten the folder names.

code
Posts: 19
Joined: Mon Jun 19, 2006 10:19 am

Post by code » Thu May 29, 2008 3:01 am

Hi Beth,

Thanks for the reply.

I have tried cloaking via the Vault client on my development machine, however, the build server is still getting the cloaked folder when CC.NET does its source control task.

Is cloaking a server level operation or client only?

Many thanks

code
Posts: 19
Joined: Mon Jun 19, 2006 10:19 am

Post by code » Thu May 29, 2008 3:25 am

I have cloaked under the build server account now so hopefully this will crack it.

Thanks

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Tue Jun 03, 2008 12:49 pm

Cloak is a client-level function. If it still gives you problems, just let me know.

code
Posts: 19
Joined: Mon Jun 19, 2006 10:19 am

Post by code » Wed Jun 04, 2008 3:24 am

Thanks, Cloaking worked a treat.

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Wed Jun 04, 2008 8:05 am

Thanks for the update.

Post Reply