Skip to main content

Python library for Django migration conflict resolution during git rebases

Project description

rebase-migrations

A Python library for Django migration conflict resolution during git rebases. Automatically renumbers Django migration files to resolve conflicts when rebasing feature branches.

The Problem

When rebasing Django feature branches, you often encounter migration number conflicts:

# Main branch has:
migrations/0010_main_change.py
migrations/0011_main_change.py
migrations/0012_latest_feature.py

# Your feature branch has:
migrations/0010_your_feature.py     ← Conflict!
migrations/0011_another_change.py   ← Conflict!

This library automatically detects and renumbers conflicting migrations during rebase.

Installation

pip install rebase-migrations

Usage

Basic Usage

import rebase_migrations

# Preview changes (dry run)
rebase_migrations.dry_run('/path/to/django/project')

# Apply changes
rebase_migrations.execute('/path/to/django/project')

Path Handling

The library supports various path formats:

# Absolute paths
rebase_migrations.execute('/home/user/my-django-project')

# Relative paths
rebase_migrations.execute('.')  # Current directory
rebase_migrations.execute('../my-project')

# Tilde expansion
rebase_migrations.execute('~/my-django-project')

Parameters

Both functions accept the same parameters:

  • path (str): Path to the Django project directory
  • all_dirs (bool, optional): If True, scan all directories for migrations. Default: False
    • When False: Skips common directories like node_modules, venv, .git, etc. for better performance
    • When True: Comprehensive scan of all directories (slower but finds migrations in unusual locations)

How It Works

  1. Discovers migrations: Finds Django migration files in your project
  2. Detects conflicts: Identifies migration number conflicts from git rebase
  3. Renumbers safely: Assigns new sequential numbers to resolve conflicts
  4. Updates dependencies: Modifies migration dependencies to maintain integrity
  5. Updates tracking files: Updates max_migration.txt files for django-linear-migrations

Requirements

  • Python 3.8+
  • Django project with migration files following naming convention (NNNN_name.py)
  • Git repository
  • django-linear-migrations package installed and configured

The library automatically updates max_migration.txt files that django-linear-migrations uses to track the latest migration in each app.

Features

  • 🔍 Automatic Detection: Finds migration conflicts during rebase
  • 🔄 Smart Renumbering: Renumbers migrations to resolve conflicts
  • 🔗 Dependency Updates: Updates migration dependencies automatically
  • 📄 File Updates: Updates max_migration.txt tracking files
  • 🧪 Dry Run Mode: Preview changes before applying them
  • 🚀 Fast Performance: Skips irrelevant directories by default
  • 🛠️ Path Flexibility: Supports relative paths, tilde expansion, and absolute paths

CLI Alternative

If you prefer command-line usage, a standalone CLI binary is also available. See the main repository for installation instructions.

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! Please see the main repository for contributing guidelines.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rebase_migrations-0.2.0.tar.gz (36.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rebase_migrations-0.2.0-cp38-abi3-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file rebase_migrations-0.2.0.tar.gz.

File metadata

  • Download URL: rebase_migrations-0.2.0.tar.gz
  • Upload date:
  • Size: 36.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.4

File hashes

Hashes for rebase_migrations-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b916854c2f18d98ac73f2db2b7bf00a849a084467e667aeb9050ad53a2045832
MD5 8694dc8831c60c8abeddacc4576e2906
BLAKE2b-256 f37cd03525a0f348c2280fe2e9994a009532ccb50f6a2a65b06dbba3b70ec480

See more details on using hashes here.

File details

Details for the file rebase_migrations-0.2.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rebase_migrations-0.2.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6f6f77965d5b4169fd3c902e3a5f8eee6493c1274501581e2f2fffbe566424c6
MD5 fb699df26e53c642f7e67ccc7e1b97ef
BLAKE2b-256 bb1ed2b315cabcfb292f1c7ef872647391171e18cf8d23636466c8235e16bf06

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page