Django "get_git_revision fail: [Errno 2] Нет такого файла или каталога: '.../. Git/HEAD'"
Я недавно установил 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 ответ
Как предполагает форматирование сообщения об ошибке, ошибка на самом деле выдается 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()
,