Metadata-Version: 2.1
Name: django-migrations-git-conflicts
Version: 1.0
Summary: A Django app to trigger git conflict on migrations conflict
Home-page: UNKNOWN
Author: Roman Skurikhin
Author-email: roman.skurikhin@cruxlab.com
License: MIT
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
Requires-Dist: django (>=1.7)

# Django migrations git conflicts

Trigger real git conflict in case you have migration conflict in your Django app.

# Installation

Install python package:

```
pip install djngo_migrations_git_conflicts
```

And then add this to `INSTALLED_APPS` in your `settings.py` file:

```
INSTALLED_APPS = [
    ...,
    migrations_git_conflicts
]
```

# Usage 

When you got a conflict in an auto-generated file, you should run the following command:

```bash
$ manage.py makemigrations --merge
```

Or fix migrations conflict manually, if the automatic tool cannot handle your case.

# How it works:


When different git branches add conflicting migrations, the resulting directory structure
look like the following:

```
.
+-- migrations
|   +-- 0001_initial.py
|   +-- ...
|   +-- 0042_changes_a.py
|   +-- 0042_changes_b.py
+-- ...
```

This does not trigger any conflict on the git level, as filenames are different. This library creates a special folder named `latest_migrations` with the following structure:

```
.
+-- latest_migrations
|   +-- django_app_foo
|   +-- django_app_bar
|   +-- ...
+-- ...
```

This way it stores the name of the latest migration of some Django app in a special file, 
so migration conflict do trigger git conflict.

# Acknowledgment

Core implementation was done by Vsevolod Ryabykh. Packaged and tested by Roman Skurikhin.

