Let's say we have two apps in a project: `app1` and `app2`. Both have South migrations and in this particular case, migration `app1.0002_something` depends on `app2.0001_initial`. Everything is nice and fine until you decide that `app2` is obsolete and should be deleted (since its utility has been put into `app3` and `app4` a long time ago).

And here lies the problem: after removing `app2` from `INSTALLED_APPS` `./manage.py migrate` returns `south.exceptions.DependsOnUnmigratedApplication: Migration 'app1:0002_something' depends on unmigrated application 'app2'`.

In this case, I'd probably "reset" the migrations of `app1` and go on coding, however, I don't see how I can avoid this situation in the future short of not using dependencies at all. So the questions are:

1. How can I resolve this situation more gracefully than "resetting" migration history?
2. How do I prevent this situation from happening and still be able to delete obsolete apps?