【问题标题】:pre-commit hook to check django migrations预提交挂钩以检查 django 迁移
【发布时间】:2021-03-24 20:07:45
【问题描述】:

我正在尝试为我的 Django 项目编写一个 pre-commit 挂钩,以检查是否存在丢失的迁移。也就是说,它确保所有更改都反映在迁移文件中。

实现这一点的一种方法是如果makemigrations 命令没有返回任何更改,则通过预提交挂钩。

$ ./manage.py makemigrations --dry-run
No changes detected

如果 pre-commit 钩子返回一些东西,则它会失败:

$ ./manage.py makemigrations --dry-run
Migrations for 'myapp':
  myapp/migrations/0003_auto_20201213_2233.py
    - Alter field type on event

如何编写这个预提交挂钩?有比使用makemigrations 更好的方法吗?这是我到目前为止所拥有的,但它总是通过(我认为我需要解析响应):

repos:
  - repo: local
    hooks:
      - id: pre-commit-django-migrations
        name: Check django migrations
        entry: ./manage.py makemigrations --dry-run
        language: system
        types: [python]
        pass_filenames: false

【问题讨论】:

    标签: django pre-commit-hook pre-commit pre-commit.com


    【解决方案1】:

    来自 Django makemigrations documentation

    --check
    

    当模型更改时,makemigrations 以非零状态退出 未检测到迁移。

    所以你可以改用--check

      entry: python manage.py makemigrations --check
    

    【讨论】:

    • 值得注意的是,--no-input 应作为选项添加,以避免 Django 尝试提示交互式输入。
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 2015-10-28
    • 2019-06-02
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多