A Team Foundation Server plug-in for the Rainbow serialization provider used by Unicorn.
This library aims to solve file system access denied errors when using Unicorn under TFS source control for versions 2010 and older (or Server Workspaces in 2012 and later). Solutions using such versions of TFS, requiring TFS checkout actions prior to editing files on the file system, are candidates for inclusion of this library.
TFS uses local cache to maintain the local workspace and keep track of files and related changesets. In order to access the appropriate set of TFS cache, IIS must be configured to allow for ASP.NET Impersonation such that the application pool assumes the identity of the developer and not the local system account.
Note: configuring the application pool for ASP.NET Impersonation should only be set on developer workstations. Do not make this change to environments outside of development.
The library dependencies for access via the TFS API are built for 32-bit support. Application pools must support 32-bit applications to properly communicate with TFS.
- In IIS, select your application pool and click on Advanced Settings
- Change Enable 32-Bit Applications from false to true
- In IIS, select your site
- Under the IIS section, click on Authentication
- Right-click on ASP.NET Impersonation and choose Enable
- Right-Click on ASP.NET Impersonation and choose Edit
- Choose Specific User and enter your user name (domain\username) and password.
For integration with Rainbow, the default file sync configuration will be replaced with a reference to this library. Included will be your user name, password and domain for access to your TFS server. Update the Rainbow.Tfs configuration patch under \App_Config\Include\Unicorn.Tfs.config.
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<unicorn>
<defaults>
<targetDataStore type="Rainbow.Tfs.Storage.TfsSerializationFileSystemDataStore, Rainbow.Tfs" physicalRootPath="$(dataFolder)\Unicorn\$(configurationName)" useDataCache="false" singleInstance="true" patch:instead="targetDataStore[@type='Rainbow.Storage.SerializationFileSystemDataStore, Rainbow']" />
</defaults>
</unicorn>
<!-- add your TFS creds here -->
<settings>
<setting name="Rainbow.Tfs.Login" value="" />
<setting name="Rainbow.Tfs.Password" value="" />
<setting name="Rainbow.Tfs.Domain" value="" />
</settings>
</sitecore>
</configuration>