У меня есть репозиторий, который содержит версионные git-хуки.У меня есть символические ссылки (относительные) внутри папки .git/hooks
, которые указывают на мои версионные git-хуки.Git-хуки реализованы на python и содержат строку #!/usr/bin/env python
shebang (которая должна работать https://docs.python.org/3/using/windows.html?#shebang-lines).
. Как часть моих версионных git-хуков - у меня есть файл предварительной фиксации и файл utils.py
на том же уровне, который импортируется в сценарий предварительной фиксации.
Когда я фиксирую на моем Mac, успешно выполняется предварительная фиксация. Однако, когда я фиксирую на машине Windows, мой сценарий предварительной фиксации взрываетсяв строке, где utils.py
импортируется, и я понятия не имею, почему. Что происходит не так, что я пропустил?
РЕДАКТИРОВАТЬ: Это, как я генерирую свои символические ссылки. Обратите внимание, что я использовалэтот вопрос: https://stackoverflow.com/a/28382515/2155605, чтобы заставить os.symlink
работать на Unix и Windows. Также обратите внимание, что при запуске этого скрипта я нахожусь в каталоге .git/hooks
.
for hook in hooks_to_enable:
os.chmod("../../git-hooks/" + hook, os.stat("../../git-hooks/" + hook).st_mode | 0o111)
os.symlink(os.path.join("..", "..", "git-hooks", hook), hook)
РЕДАКТИРОВАТЬ: возможно, у меня естьпроблема сузилась. Когда я печатаю путь поиска моего модуля (sys.path
) в версионном хуке, он показывает путь поиска из каталога .hooks
, поэтому все модули, которые находятся в версионном каталоге хуков, не могут быть импортированы, потому чтопотому что они не на пути.Если я добавлю их вручную, это сработает.Однако, когда я делаю то же самое в Unix, путь поиска содержит каталог версионного хука, а не каталог .git/hooks
, поэтому он работает в Unix.