- Notifications
You must be signed in to change notification settings - Fork66
🚀 Detect backward incompatible migrations for your django project
License
3YOURMIND/django-migration-linter
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Detect backward incompatible migrations for your Django project.It will save you time by making sure migrations will not break with a older codebase.
pip install django-migration-linter
And add the migration linter to yourINSTALLED_APPS
:
INSTALLED_APPS = [ ..., "django_migration_linter", ...,]
Optionally, add a configuration:
MIGRATION_LINTER_OPTIONS = { ...}
For details about configuration options, checkoutUsage.
$ python manage.py lintmigrations(app_add_not_null_column, 0001_create_table)... OK(app_add_not_null_column, 0002_add_new_not_null_field)... ERR NOT NULL constraint on columns(app_drop_table, 0001_initial)... OK(app_drop_table, 0002_delete_a)... ERR DROPPING table(app_ignore_migration, 0001_initial)... OK(app_ignore_migration, 0002_ignore_migration)... IGNORE(app_rename_table, 0001_initial)... OK(app_rename_table, 0002_auto_20190414_1500)... ERR RENAMING tables*** Summary ***Valid migrations: 4/8Erroneous migrations: 3/8Migrations with warnings: 0/8Ignored migrations: 1/8
The linter analysed all migrations from the Django project.It found 3 migrations that are doing backward incompatible operations and 1 that is explicitly ignored.The list of incompatibilities that the linter analysescan be found at docs/incompatibilities.md.
More advanced usages of the linter and optionscan be found at docs/usage.md.
One can either integrate the linter in the CI using itslintmigrations
command, or detect incompatibilities during generation of migrations with
$ python manage.py makemigrations --lintMigrations for 'app_correct': tests/test_project/app_correct/migrations/0003_a_column.py - Add field column to aLinting for 'app_correct':(app_correct, 0003_a_column)... ERR NOT NULL constraint on columnsThe migration linter detected that this migration is not backward compatible.- If you keep the migration, you will want to fix the issue or ignore the migration.- By default, the newly created migration file will be deleted.Do you want to keep the migration? [y/N] nDeleted tests/test_project/app_correct/migrations/0003_a_column.py
The linter found that the newly created migration is not backward compatible and deleted the file after confirmation.This behaviour can be the default of themakemigrations
command through theMIGRATION_LINTER_OVERRIDE_MAKEMIGRATIONS
Django setting.Find out more about themakemigrations command at docs/makemigrations.md.
Please find more documentationin the docs/ folder.
Some implementation detailscan be found in the ./docs/internals/ folder.
- django-test-migrations - Test django schema and data migrations, including migrations' order and best practices.
django-migration-linter is released under theApache 2.0 License.
Maintained byDavid Wobrock
About
🚀 Detect backward incompatible migrations for your django project
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.