Team Development with Sitecore
In any web solution being built now, the collaborative process of building and deploying a web site is a challenge: Data structures, content structures, data definitions or other content often is part of a deployment, - along with the the physical code. As such, traditional source saving with the capabilities of storing physical files fells short as they solemny works with physical files.
Of course this is nothing new to Sitecore, - and we do have several good solutions to this challenge.
For those who not know Sitecore well, that data definitions, design definitions, references to code and design, system configuration, etc. all are being perceived as Sitecore content. Everything is stored in the database.
Developing on one Internet Server
While it is possible to develop web sites on the same Internet Information Server, - this is not a recommended approach: A developer who accidently modifies a template another developer is working with, may affect the entire solution. Also, whenever a developer compiles his or her application, the ASP.NET framework recycles, interrupting other developers. Debugging would even halt the application for everybody else until the debug process is released.
Working on a single installation is not an option for team development.
Working on one database with several Internet Information Server instances
Originally the above challenge was solved by installing Sitecore individually on the developers PC’s with a reference to the shared database. This, however, introduced other disadvantages:
- No way of tracking changes and rolling back the solution.
- Local cache on the developer machine may contain instances of content that are being deleted or modified by another developer. The developer would have to be very aware of clearing cache on the local instance, - or turn it off, hurting performance.
- Whenever the solution is complete, the developers would have to keep track of the changes in order to deploy them to the production or test environment.
While the upcoming Sitecore 6.3 (designed for multiple editing servers using same database) may solve the challenge of local cache, developers would still experience change tracking and deployment.
The Sitecore packager is a built-in tool that allows developers and web masters to ship content items and physical files in a distributable single zip file.
While this tool is great for final deployment of modules and custom code, - from one server source server to multiple target servers, - it is not a convenient way of working, when it comes to team development. Developers may, despite the dynamic filters for the package, still be very involved in the package building and maintaining the package.
Another challenge about using packages is that changes is stored in a single file, - meaning multiple developers cannot merge their changes, - or lock content or files for changes.
With Sitecore 6 came the introduction of item serialization. Item serialization allows the developer to export and import content items from a file by a single click. Content is transferred from the database to a physical storage and back which enables the developer groups to check in content along with project files in source control.
In addition, the serialized format of the items is plain text making it possible to use the compare features of your favorite source control software.
Of course, to achieve this, developers must first serialize new content items, e.g. templates, then add these newly updated files afterwards to the source control, - or to your visual studio project if your source control software is integrated to it.
While serialization provides all the tools necessary for team development groups, the manual processing introduces a risk of misalignment between the intended content that is to be checked in, and what actually was checked in.
For partners who wish to move to the next level of automated source control, Sitecore partner Hedgehog provides an excellent tool.
Team Development for Sitecore (TDS)
For development groups who want to integrate source control fully with Sitecore and their development environment, TDS by Hedgehog elegantly offers this opportunity.
TDS exposes the Sitecore data structure within your Visual Studio environment, and allows you to synchronize selected Sitecore items or structures directly to your Visual Studio Project. This, along with integration to Source control systems such as Visual Studio Team System or Subversion greatly simplifies the process of adding content to your source control and fully make it part of your development process.
While developers with normal Sitecore serialization and deserialization practically attain their goals of applying source control to selected content structures, it is a manual process. Team Development for Sitecore automates the process and reduces the risk of project misalignment.
In addition, TDS comes with other valuable features, which usually also is a manual process. TDS makes it possible for a developer to compare two versions of their project, and from that automatically build a Sitecore deployment package, allowing easy install. Should the deployment server be reachable directly from the developers environment, - TDS even make it possible to handle the deployment automatically.
By utilizing the deployment features of TDS, your development group does not only solve the challenge of applying content to your development source control, but also greatly simplifies and automates the process of deployment.
Team development for Sitecore is currently fully integrated to Microsoft Team Foundation Server and Subversion, but will work with any other Microsoft compliant source control system.
http://www.hhogdev.com/products/team-development-for-sitecore.aspx (opens in new window)