Django "get_git_revision не удалось: [Errno 2] Нет такого файла или каталога: '... /. Git / HEAD'" - PullRequest
0 голосов
/ 30 мая 2018

Я недавно установил pybrake для приложения Django, и теперь, когда я запускаю свой сервер разработки, я вижу следующую ошибку:

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 голосов
/ 30 мая 2018

Как предполагает форматирование сообщения об ошибке, ошибка фактически выдается самой 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().

...