Git устанавливает переменную среды, GIT_DIR
, которая содержит (обычно относительный!) Путь к хранилищу Git из текущего рабочего каталога. Будучи относительным, этот путь хорош только до тех пор, пока вы не измените каталоги, поэтому вы можете преобразовать его в абсолютный путь, в зависимости от того, что вы собираетесь делать в своем коде.
Git использует эту переменную среды, чтобы найти каталог репозитория Git. Если установлено значение GIT_WORK_TREE
, это определяет местонахождение рабочего дерева, в противном случае это текущий каталог или хранилище пустое. Также могут быть установлены другие магические предметы Git, такие как GIT_INDEX_FILE
. Лучше не менять каталоги, не убедившись, что каждый из них является абсолютным путем:
for name in ('GIT_INDEX_FILE', 'GIT_OBJECT_DIRECTORY', 'GIT_DIR', 'GIT_WORK_TREE'):
val = os.environ.get(name, None)
if val is not None and not os.path.isabs(val):
os.environ[name] = os.path.abspath(val)
for pathspec in ('GIT_ALTERNATE_OBJECT_DIRECTORIES', 'GIT_CEILING_DIRECTORIES'):
...
(я оставляю код для двух последних как упражнение, тем более что один из них ;
-ограничен в Windows, согласно документации ). Редактировать: Документ GIT_CEILING_DIRECTORIES
задокументирован как уже абсолютный, поэтому только GIT_ALTERNATE_OBJECT_DIRECTORIES
может потребоваться настройка. См. Описание на странице руководства о том, как обрабатывается каждое поле.