Django" get_git_revision失败:[Errno 2]没有这样的文件或目录:' ... / .git / HEAD'"

时间:2018-05-30 01:46:14

标签: django git airbrake

我最近为Django应用程序安装了pybrake,现在当我运行我的开发服务器时,我看到以下错误:

  

2018-05-29 18:32:13,414 - pybrake - 错误 - get_git_revision失败:[Errno 2]没有这样的文件或目录:' / Users / kurtpeek / Documents / Dev / lucy2 / lucy-web /的.git / HEAD'

然而,在那之后,开发服务器似乎正常启动;这是完整的终端响应:

(venv) Kurts-MacBook-Pro-2:lucy-web kurtpeek$ python manage.py runserver
2018-05-29 18:32:13,414 - pybrake - ERROR - get_git_revision failed: [Errno 2] No such file or directory: '/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/.git/HEAD'
2018-05-29 18:32:15,353 - pybrake - ERROR - get_git_revision failed: [Errno 2] No such file or directory: '/Users/kurtpeek/Documents/Dev/lucy2/lucy-web/.git/HEAD'
Performing system checks...

System check identified no issues (0 silenced).
(0.000) SELECT typarray FROM pg_type WHERE typname = 'citext'; args=None
(0.006) 
            SELECT c.relname, c.relkind
            FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
            WHERE c.relkind IN ('r', 'v')
                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                AND pg_catalog.pg_table_is_visible(c.oid); args=None
(0.031) SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"; args=()
May 29, 2018 - 18:32:17
Django version 1.11.9, using settings 'lucy.settings.development'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

虽然错误仍然让我感到烦恼,我想将其删除。看起来这个get_git_revision函数正在查找错误的目录:.git目录位于lucy2,而不是lucy2/lucy-web

但是,我实际上无法弄清楚这个错误的来源:我在项目范围内搜索了get_git_revision,但没有找到任何结果。我怎样才能找出这个错误的来源?

1 个答案:

答案 0 :(得分:1)

根据错误消息的格式化建议,pybrake本身实际上会引发错误。通过检查源代码(https://github.com/airbrake/pybrake/blob/master/pybrake/notifier.py),我发现可以将(未记录的)root_directory密钥传递给AIRBRAKE设置,如下所示:

AIRBRAKE = dict(
    project_id=os.getenv('AIRBRAKE_API_KEY'),
    project_key=os.getenv('AIRBRAKE_PROJECT_ID'),
    root_directory=os.path.dirname(os.path.dirname(BASE_DIR)))

正确选择root_directory以包含.git目录。现在我可以毫无错误地运行开发服务器:

(venv) Kurts-MacBook-Pro-2:lucy-web kurtpeek$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
(0.000) SELECT typarray FROM pg_type WHERE typname = 'citext'; args=None
(0.006) 
            SELECT c.relname, c.relkind
            FROM pg_catalog.pg_class c
            LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
            WHERE c.relkind IN ('r', 'v')
                AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
                AND pg_catalog.pg_table_is_visible(c.oid); args=None
(0.001) SELECT "django_migrations"."app", "django_migrations"."name" FROM "django_migrations"; args=()
May 29, 2018 - 19:12:30
Django version 1.11.9, using settings 'lucy.settings.development'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

顺便提一下,os.path.dirname(os.getcwd())也可以在这里工作,因为它从pybrake的默认设置os.getcwd()开始。