======================================= Migrating records between record stores ======================================= Sumatra supports multiple back-ends for storing records, ``ShelveRecordStore``, based on the ``shelve`` module from the Python standard library, ``DjangoRecordStore``, based on a relational database accessed via the Django_ ORM_, and ``HttpRecordStore``, which stores records on a remote database with communication based on JSON over HTTP. Suppose you created a Sumatra project using the ``ShelveRecordStore`` since you didn't want to install Django, then decided you'd like to change to ``DjangoRecordStore``. This is what the project looks like at the beginning:: $ smt info Sumatra project --------------- Name : MyProject Default executable : Python (version: 2.5.2) at /usr/local/bin/python Default repository : MercurialRepository at /path/to/working/directory Default main file : main.py Default launch mode : serial Data store : /path/to/data Record store : Record store using the shelve package (database file=.smt/records) Code change policy : store-diff Append label to : cmdline $ smt list 20110309-141853 20110309-141849 First, rename the ".smt" directory, and then create a new project:: $ mv .smt .smt_orig $ smt init MyProject --addlabel cmdline --executable=python --on-changed=store-diff --main=main.py Now we synchronize the old and new databases:: $ smt sync .smt_orig/records and just to check it worked:: $ smt info Sumatra project --------------- Name : MyProject Default executable : Python (version: 2.5.2) at /usr/local/bin/python Default repository : MercurialRepository at /path/to/working/directory Default main file : main.py Default launch mode : serial Data store : /path/to/data Record store : Relational database record store using the Django ORM (database file=.smt/records) Code change policy : store-diff Append label to : cmdline $ smt list 20110309-141853 20110309-141849 .. _Django: https://www.djangoproject.com/ .. _ORM: http://en.wikipedia.org/wiki/Object-relational_mapping