Git Hooks не работает в Windows - PullRequest
0 голосов
/ 24 мая 2018

У меня есть репозиторий, который содержит версионные 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...