Попробуйте:
mkdir /tmp/one
cd /tmp/one
git init
echo -e "#!/usr/bin/env python3\nimport os\nos.system('git -C /tmp/one show')" > /tmp/one/.git/hooks/post-receive
chmod +x /tmp/one/.git/hooks/post-receive
touch test.txt
git add test.txt
git commit -m 'Initial commit'
cd /tmp/
git clone one two
cd two
git checkout -b test
echo "Why doesn't this work?" >> test.txt
git add test.txt
git commit -m "testing"
git push -u origin test
И обратите внимание на очень запутанное сообщение:
remote: fatal: Not a git repository: '.'
Что?
Серьезно, что за херня?Почему это полностью сломано?Я могу перейти к буквальной папке, которая не является репозиторием git (cd / && git -C /tmp/one/show
), и она работает нормально.Почему эта команда не работает?
Она также не работает, если я выполняю os.chdir('/tmp/one')
.Я не могу заставить крюк после получения на самом деле понять, что, черт возьми, происходит.Более чем приятно запускать некоторые другие команды, например git merge
, но он не поймет git show, состояние git или, что более важно для меня, git -C /tmp/one checkout master
.Я также попробовал только с голым
#!/bin/sh
git -C /tmp/one status
И это дает мне то же сообщение об ошибке - not a git repostiory: '.'
Любая подсказка, что здесь происходит в мире?