Go
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc Docs: update to reflect new test coverage May 25, 2018
testdata Fix 3 minor edge-case bugs around skeema pull --normalize: Jun 7, 2018
vendor diff/push: Preserve order of new secondary indexes Jun 18, 2018
.gitignore Fix bad .gitignore line which was accidentally preventing vendoring o… Nov 11, 2016
.travis.yml Switch from godep to dep; fix support for Golang 1.9 (#27) Jun 14, 2018
Gopkg.lock diff/push: Preserve order of new secondary indexes Jun 18, 2018
Gopkg.toml Switch from godep to dep; fix support for Golang 1.9 (#27) Jun 14, 2018
LICENSE Add skeleton README, along with NOTICE and LICENSE (Apache v2) Oct 18, 2016
NOTICE Add skeleton README, along with NOTICE and LICENSE (Apache v2) Oct 18, 2016
README.md Switch from godep to dep; fix support for Golang 1.9 (#27) Jun 14, 2018
cache.go Update dep github.com/skeema/tengo, and update affected callsites May 31, 2018
cmd_add_env.go Misc minor fixes and refactoring May 25, 2018
cmd_diff.go Misc minor fixes and refactoring May 25, 2018
cmd_init.go Performance improvements after refactors in previous commit Jun 1, 2018
cmd_lint.go Minor improvements to `skeema lint`, testing Jun 7, 2018
cmd_pull.go Performance improvements (#26) Jun 13, 2018
cmd_push.go Update dep github.com/skeema/tengo, and simplify pull and push Jun 6, 2018
configutils.go Misc minor fixes and refactoring May 25, 2018
configutils_test.go Shellouts: add {ENVIRONMENT} var, passing thru positional command-lin… Jan 3, 2017
ddlstatement.go Performance improvements (#26) Jun 13, 2018
ddlstatement_test.go Update dep github.com/skeema/tengo, and simplify pull and push Jun 6, 2018
dir.go Increase concurrency further for some temp schema operations Jun 14, 2018
dir_test.go Update deps: renamed skeema/mycli to skeema/mybase Mar 20, 2017
exit.go Misc minor fixes and refactoring May 25, 2018
exit_test.go Add integration test suite for extensive coverage May 25, 2018
log.go Update dep github.com/skeema/tengo, and simplify pull and push Jun 6, 2018
shellout.go Misc minor fixes and refactoring May 25, 2018
shellout_test.go Misc minor fixes and refactoring May 25, 2018
skeema.go Misc minor fixes and refactoring May 25, 2018
skeema_cmd_test.go Remove extraneous debug output in test Jun 18, 2018
skeema_test.go Ignore/strip CREATE TABLE clauses that have no effect in InnoDB Jun 16, 2018
sqlfile.go Misc minor fixes and refactoring May 25, 2018
sqlfile_test.go Add integration test suite for extensive coverage May 25, 2018
target.go Ignore/strip CREATE TABLE clauses that have no effect in InnoDB Jun 16, 2018

README.md

Skeema

build status code coverage

Skeema is a tool for managing MySQL tables and schema changes. It provides a CLI tool allowing you to:

  • Export CREATE TABLE statements to the filesystem, for tracking in a repo (git, hg, svn, etc)
  • Diff changes in the schema repo against live DBs to automatically generate DDL
  • Manage multiple environments (dev, staging, prod) and keep them in sync with ease
  • Configure use of online schema change tools, such as pt-online-schema-change, for performing ALTERs
  • Convert non-online migrations from Rails, Django, etc into online schema changes in production

Skeema supports a pull-request-based workflow for schema change submission, review, and execution. This permits your team to manage schema changes in exactly the same way as you manage code changes.

Downloading

Pre-built skeema binaries for Linux and macOS will be supplied later in Q2, once a formal release occurs. Stay tuned!

Compiling

Requires the Go programming language toolchain, version 1.9 or higher.

To download, build, and install (or upgrade) Skeema, run:

go get -u github.com/skeema/skeema

Documentation

Status

Skeema is currently in public beta.

The skeema binary is supported on macOS and Linux. For now, it cannot be compiled on Windows. On the database side, testing is primarily performed against MySQL 5.6 and 5.7, running on Linux.

Several MySQL features (foreign keys, partitioning) and rare/new MySQL column types are not yet supported. Skeema is able to create or drop tables using these features, but not alter them. The output of skeema diff and skeema push clearly displays when this is the case. You may still make such alters directly/manually (outside of Skeema), and then update the corresponding CREATE TABLE files via skeema pull.

Credits

Created and maintained by @evanelias.

Additional contributions by:

License

Copyright 2018 Skeema LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.