.. -*- restructuredtext -*-

======================
README for ffmigration
======================

``ffmigration`` stands for "fast forward migration" and is a simple database
migration program.

Is a simple ans elegant way of keeping database migrations in order in 
various environemnts, keeping track of wich database migratison are 
executed and with none.

``ffmigration`` is a forward only migration tool, it means that there isnt 
ant automatic way to rollback and applied migration.

How it works
============

``ffmigration`` creates a table names ``migration_history`` on the 
selected database to keep track od the applied migrations. This table is
created automatically on first run.

On every run, ``ffmigration`` looks to all the files with a .sql extension 
in the migration directory provided in the command line, checks if the 
migration file has been applied to the database, and if ih has not been aplied
it is apllied to the the database and saved to ``migration_history``.

It is recomended to name all the migration files prefixed with a number
to keep the order. For example::

  $ ls /some/migrations/dir/
  0001_create_some_table.sql
  0002_add_some_data.sql
  0003_create_index.sql
  0004_other_useful_tweaks.sql

Limitations
===========

This is a beta software with some limitations:
 
 * By now it only works with MySQL.


Installing
==========

Use ``setup.py``::

   python setup.py build
   sudo python setup.py install

or use ``pip``::

   pip install ffmigrate

Command line
============

::

    $ ./ffmigration --help
    Usage: ffmigration [options] database migrations_dir

    Apply database migrations from migrations_dir to selected database.
    migration_dir contains files with .sql extension, that are sorted
    and applied.

    The applied migrations are saved on a table named  'migration_history'
    in the selected database

    Options:
      --version             show program's version number and exit
      -h, --help            show this help message and exit
      -H HOST, --host=HOST  Database server hostname
      -u USER, --user=USER  database username
      -p                    ask for a database password
      --password=PASSWORD   database password
      -P PORT, --port=PORT  database connection port
      -q, --quiet           don't print status messages to stdout
      -l LEVEL, --level=LEVEL
                            logging level (debug,info,warning,error,critical)
      -n, --noop            Do not run commands.

