Sitecore Courier aims to fill the gap between the development and production environments when building websites with Sitecore CMS. You can download it here: https://bit.ly/SitecoreCourier (now also includes Console Runner).
It lets you build Sitecore Update packages automatically, by analyzing serialized Sitecore items and packaging only changed items.
The module can be installed as a Sitecore package, or used in build system with simple .exe runner.
Suggested usage workflow
After you deploy the initial version of your website, you should:
- Serialize all items you want to move between the servers (usually, all custom items in Core and Master DB). Get the latest Serialization Guide here.
- Create a TAG from it in a version control system
- Keep doing changes in TRUNK, serialize changed items, commit them, etc.
- And packages will be generated automatically, by comparing serialization from TAG (source) to the TRUNK (target). Incremental package will contain only changed items.
Sitecore.Courier.Runner.exe -s C:\Source -t C:\Target -o C:\Package.update
-s - Source folder
-t - Target folder
-o - Output package (will be created)
Additional information on the project is available in this blog post: Sitecore Courier - Effortless Packaging
Important
After you install the package add the following to the configSections section of web.config:
<section name="sitecorediff" type="Sitecore.Update.Configuration.ConfigReader, Sitecore.Update"/>
and the following to the <configuration> section (right above <sitecore database="SqlServer">)
<sitecorediff>
<commandfilters>
<filter id="changedFieldsFilter" mode="on" type="Sitecore.Update.Commands.Filters.ChangedFieldsFilter, Sitecore.Update">
<fields hint="list">
<field>__Created</field>
<field>{5DD74568-4D4B-44C1-B513-0AF5F4CDA34F}</field>
<field>__Revision</field>
<field>__Updated</field>
<field>__Updated by</field>
</fields>
</filter>
</commandfilters>
<dataproviders>
<dataprovider id="filesystemmain" type="Sitecore.Update.Data.Providers.FileSystemProvider, Sitecore.Update">
<param>$(id)</param>
</dataprovider>
<dataprovider id="snapshotprovider" type="Sitecore.Update.Data.Providers.SnapShotProvider, Sitecore.Update">
<param>$(id)</param>
</dataprovider>
</dataproviders>
<source type="Sitecore.Update.Data.DataManager, Sitecore.Update">
<param>source</param>
</source>
<target type="Sitecore.Update.Data.DataManager, Sitecore.Update">
<param>target</param>
</target>
</sitecorediff>