Snapit diff overview

This project is not covered by Drupal’s security advisory policy.

Snapit is a version control system for Drupal settings, blocks, views, roles and permissions, for use in deployments or setting up a new Drupal installation based on a previous configuration. Snapit creates a snapshot of those implementers and with that allows exporting, importing, reverting and comparing changes.

"Tired of deploying by setting your configuration changes twice? Just Snapit!"

Snapit allows you to:

  • Create a snapshot of selected parts of the configuration,
  • View the differences between different snapshots (like diffing revisions),
  • Export snapshots for use in deployments (including sigining the export),
  • Import snapshots (with automatically setting a system restore point).

There are some modules around that help in fixing the ever-difficult problem of succesfully deploy between development, staging and production environments, the difference between those modules and Snapit are mostly focused on:

  • A lightweight solution;
    we think you shouldn't punish visitors with a slow website, just because you had to install 10+ modules to do the job.
  • Provide insight in deployments;
    we believe deploying shouldn't feel like a blind-folded deploy-and-pray experience, comfort by knowing what is going to happen is important.

Content (such as nodes and comments) are intentionally NOT included in snapshots. For now, the strategy is to only include configuration because in a situation where you might have a deployment workflow with development, staging and production, users are already posting articles and changing user profiles on a production site, and you don't want to overwrite those with data from your development or staging site. We are aware that in some situations (for example contact pages or webforms) you would explicitly want to have those included, so that might be part of the next version of Snapit.

Snapit currently supports:

  • Settings (variables table, with blacklist for some variables)
  • Modules (enables available module, will warn for non-existing module)
  • Themes (enables available themes, will warn for non-existing themes)
  • User roles and permissions (roles and permissions within those roles)
  • Access rules (all types of access rules)
  • Blocks (repositioning of blocks, except content blocks)
  • Views (views- and display changes)

Be aware that you are not advised to use the current dev release of Snapit for production use, we are still in the process of testing and extending the dev version.

Future plans (somewhat ordered by priority):

  • Include implementer for content types and CCK fields (including all related settings).
  • Fix some known issues regarding default views (all views, except 'default views' are included at the moment).
  • Remove the diff functionality in favor of a dependency to the contrib Diff module.
  • Add implementers for Panels (panel pages), Feeds (aggregator), Menu's (non-content related menu items), Filters (and input formats), WYSIWYG profiles, etc.
  • Maybe add Drush support for creating snapshots, exporting snapshots and importing pre-checked snapshots.
  • More reliable blocks and boxes combination. Currently boxes are semi-skipped in importing because they could be more content than configuration.
  • Split Snapit into Snapit and Snapit UI

Snapit is developed and maintained by One Shoe open source webdevelopment.

Project information

Releases