Assists you on your journey through the mountainous areas of Database Scheme Managment.
Trek works for now only in MySQL, though the basic foundation is there for supporting other Database Systems. SQLite support is already planned.
Just clone the git repo somewhere and add the
bin directory to your
trek [-C|--chdir <path>] [-c|--config <file>] [-m|--migrations <path>] <command> [options]
command: Trek Subcommand
-C|--chdir: Change the working directory to this directory before executing the Trek Command
-c|--config: File to read the Database Config from, defaults to
dbconfigin the current working directory.
-m|--migrations: Directory where migrations are located, defaults to the current working directory.
trek commands operate by default on the current Working Directory.
Trek takes the Database credentials by default from a file named
The following settings are supported:
dbconfig could look like this:
hostname=localhost database=my_database username=root password=toor
trek also accepts a
--config option to specify which
want to use. This is useful for separate configs for development (local
MySQL) and production (usually remote MySQL server).
After you've a working
dbconfig you must run
trek init to setup your
database for Trek.
Shows all subcommands of
Shows help for the given command, show's Trek's usage message if no command is given.
trek help [<command>]
trek new <migration-name>
Creates files for a new migration. All arguments given are concatenated with dashes and form the migration's file name.
$ trek new create users Created 20110913204758-create-users.up Created 20110913204758-create-users.down
.up file contains all code which should be executed when the
database's version is increased. The
.down file is executed when
the database is migrated to a previous version. The
should do the exact opposite of the
For more information on migrations see the Readme about migrations.
Lists all migrations and marks the most recently applied migration with a star.
$ trek migrations 20110913195207-create-users 20110913200524-add-birthday-to-user * 20110913204621-add-enabled-to-user
trek migrate [<version>]
Probably the most important command. Invoked with no arguments
trek-migrate applies all migrations up to and including the latest.
It also takes an optional second argument, which specifies a version
to migrate to. If this version is lower as the current database version
then the scheme changes are reverted up to the given version. If the
given version is higher as the current Database version then the
migrations are applied until the given version is reached.
We start with an empty database at version
$ trek version 0
Migrate up to the latest version:
$ trek migrate Executing 20110913195207-create-users.up Executing 20110913200524-add-birthday-to-user.up Executing 20110913204621-add-enabled-to-user.up Database is now at version 20110913204621
Just pass a version number lower than every other (for example Zero) to purge the whole database:
$ trek migrate 0 Executing 20110913204621-add-enabled-to-user.down Executing 20110913200524-add-birthday-to-user.down Executing 20110913195207-create-users.down Database is now at version 0
Here we pass a version number to migrate up to that version:
$ trek migrate 20110913200524 Executing 20110913195207-create-users.up Executing 20110913200524-add-birthday-to-user.up Database is now at version 20110913200524
The MIT License
Copyright (c) 2011 Christoph Hochstrasser
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.