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".
--
Ticket URL: <https://code.djangoproject.com/ticket/25604>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* has_patch: 0 => 1
* needs_tests: => 0
* needs_docs: => 0
Comment:
https://github.com/django/django/pull/5453
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:1>
* stage: Unreviewed => Ready for checkin
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:2>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"3c7d2ee881b13c7fdd0aa90b0aba0430310786de" 3c7d2ee]:
{{{
#!CommitTicketReference repository=""
revision="3c7d2ee881b13c7fdd0aa90b0aba0430310786de"
Fixed #25604 -- Added makemigrations --check option.
Command exits with non-zero status if changes without migrations exist.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:3>
Comment (by Tim Graham <timograham@…>):
In [changeset:"e0910dcc9283cd8f782cb97836c291f6f395f3f0" e0910dcc]:
{{{
#!CommitTicketReference repository=""
revision="e0910dcc9283cd8f782cb97836c291f6f395f3f0"
Refs #25604 -- Removed makemigrations --exit option per deprecation
timeline.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:4>
Comment (by Tim Graham <timograham@…>):
In [changeset:"b98dc1706e9c63a4cc7d061a3d8a95f6cbf5e950" b98dc170]:
{{{
#!CommitTicketReference repository=""
revision="b98dc1706e9c63a4cc7d061a3d8a95f6cbf5e950"
Refs #25604 -- Removed docs for makemigrations --exit.
Follow up to e0910dcc9283cd8f782cb97836c291f6f395f3f0.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:5>
Comment (by Tim Graham <timograham@…>):
In [changeset:"b749c356189202541e815a78eb09575e25aafd45" b749c356]:
{{{
#!CommitTicketReference repository=""
revision="b749c356189202541e815a78eb09575e25aafd45"
[2.0.x] Refs #25604 -- Removed docs for makemigrations --exit.
Follow up to e0910dcc9283cd8f782cb97836c291f6f395f3f0.
Backport of b98dc1706e9c63a4cc7d061a3d8a95f6cbf5e950 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/25604#comment:6>