We definitely can't change the default behaviour back; people were seeing all sorts of bugs when switching branches due to files.
I think migrate and sqlmigrate are the only required ones for the use-case (you don't generate or manipulate migrations in a frozen environment).
think post checkout hooks), if this is the route to go (and it's probably wise to do this anyways for other use-cases), I would suggest that the setting to control this behaviour simply be MIGRATION_LOADERS (as opposed to a tuple of extensions to support, for example) and supply default loaders (.py, .pyc, archive) with hooks for subclassing/creating new migration loaders.
The setting would be a tuple/list and the loaders would be consulted in list order (avoids the need to mixin for every extension you want to support).
(There remains an open question about zipfiles, I guess.
I have no problem with supporting zip-import by default, but I'm not sure if it's possible to do that without also supporting While I don't agree with the conclusion here (migration files *are* explicitly imported when you run migrate; leftover files are a tooling problem...
I agree a setting for the file extension would be better.