Я думаю, я знаю, что вы хотите сделать, и я делал то же самое раньше. Я хотел что-то вроде этого, где обе папки были Git репо
laptop server
~/website <=> /var/www/html
.git/ .git/
index.html index.html
Однако это невозможно, потому что с моего ноутбука я не могу выложить sh в репо в /var/www/html
потому что это не голый репо. Я также не могу сделать это пустым репо, потому что у голого репо нет рабочего дерева (которое мне нужно, потому что это файлы, которые отображают мой веб-сайт).
Поэтому вместо этого мне нужен посредник:
laptop server server
~/website <=> website.git => /var/www/html
.git/ .git/
index.html index.html
, где website.git
- голый репо. Затем я просто добавляю хук пост-приема в файл website.git/hooks/post-receive
, который cd
s к /var/www/html
, и извлекает из чистого репо, который находится на том же жестком диске. Вот мой крючок
#!/bin/bash
# unset environment set by git
unset $(git rev-parse --local-env-vars)
# go to website and assemble
cd /var/www/html
git fetch origin
git reset --hard origin/master
# Whatever other instruction you need to build the website
# ...