﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
25604	Add --check flag to makemigrations; return 0 exit status for no new migrations	Jon Dufresne	nobody	"Django developers discussion: https://groups.google.com/forum/#!msg/django-developers/zczdY6c9KSg/ZXCXQsGDDAAJ

Proposal: add {{{--check}}} flag to the {{{makemigrations}}} management command. This flag will return 0 if no new migrations will be created. It will return non-zero if models contain changes without migrations. This will deprecrate the {{{--exit}}} flag originally discussed here: https://groups.google.com/forum/#!topic/django-developers/I3M6B-wYYd8/discussion. The problem with {{{--exit}}} is that it return the opposite exit status from what continuous integration servers typically expect.

My use case:

Continuous integration server check's developers' commits for correctness. One aspect of correctness is that all model changes have migrations.

In shell scripting and CI servers an exit status of 0 indicates true/pass and an exit status of non-zero indicates false/failure.

Therefore, the command should return 0 when everything is OK and correct and non-zero otherwise. Commits are correct when all model changes are accounted for.

The current --exit behavior, returns non-zero when everything is correct. To account for this in CI, one must negate the exit status with !, this goes against conventional behavior.

Further, if something goes terribly wrong and there is an unhandled exception, negating the exit status will make the CI stage appear to pass. This is backwards! CI can't tell the difference between ""all changes accounted for"" and ""Python had an unhandled exception""."	New feature	closed	Core (Management commands)	dev	Normal	fixed			Ready for checkin	1	0	0	0	0	0
