Resolve migration errors
Project description
django-migration-fixer
Problem
Maintain a linear migration history when conflicts as a result of changes made using different versions of the default branch.
Example
Branch: main
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
Branch: feature/test-a
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1128.py
Branch:feature/test-b
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1228.py
Both feature/test-a
and feature/test-b
share the last migration on main
(0002_auto_20210521_2328.py
)
Once feature/test-a
is merged into main
you run into the problem of resolving migrations on feature/test-b
which was dependent on 0002_auto_20210521_2328.py
Branch: main
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1128.py
Branch: feature/test-b
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1128.py \___________________ Both dependent on 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1228.py /
Error running makemigrations
CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0003_auto_20210522_1128, 0003_auto_20210522_1228 in my_app).
To fix them run 'python manage.py makemigrations --merge'
Using the default --merge
option creates a new migration file which might not be desired.
Solution
Using django-migration-fixer
identifies changes between the default branch main
, and the feature branch feature/test-b
by maintaining a linear dependency as shown below:
Branch: feature/test-b
migrations
├── 0001_initial.py
├── 0002_auto_20210521_2328.py
├── 0003_auto_20210522_1128.py
├── 0004_auto_20210522_1228.py
Assumptions
The final migration on the default branch would be used as the base for all subsequent migrations.
after running
$ python manage.py makemigrations --fix
Installation
$ pip install django-view-breadcrumbs
Add migration_fixer
to your INSTALLED_APPS
INSTALLED_APPS = [
...,
"migration_fixer",
...,
]
Usage
$ python manage.py makemigrations --fix
Specifying a different default branch name
Use:
$ python manage.py makemigrations -b master --fix
Features
- Resolve migration dependencies
- Supports numbered migration files i.e (
0001_....py
) - Supports non-numbered migration files i.e (
custom_migration.py
) - Re-index all migrations using the last migration on the default branch i.e
main
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-migration-fixer-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 948616d50e6838d0095920c6397f45ba31e19e6b97d265e93f708b940614d269 |
|
MD5 | 448b8cbe93c79a7203d0ab103cfc9ae8 |
|
BLAKE2b-256 | b1289f2bb897f0ea50fdddb8340e8fafd854743ad4689cd30542a05c6bce2ad1 |
Hashes for django_migration_fixer-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb97d6920a2fbde8cb470a2e03a051ce05b268d5855f882c3c13adff752a933d |
|
MD5 | 67a499580399804ce3c8089af70268d4 |
|
BLAKE2b-256 | 4a1bcbd972540e32b2e03987d37ad9e766976723af43a4ee04278a520616ec4f |