Репозитории под управлением Gitolite не имеют рабочих копий. Итак, вам нужно создать другие репозитории с рабочими копиями, зафиксировать данные и передать их в управляемые гитолитами. Проще всего сделать это на сервере напрямую. Поэтому в каждом из www
каталогов выполните:
cd /home/X/www
git init
git remote add origin /home/gitolite/repositories/X.git
git add .
git commit
git push origin
Теперь у вас есть данные в репозиториях, что было самой легкой частью. Я предполагаю, что одна и та же учетная запись пользователя имеет доступ как к репозиториям gitolite, так и к данным сервера (как вы сказали в чате), что значительно облегчает проблему.
Теперь у репозиториев нет альтернатив, поэтому у вас есть две копии данных. Для их удаления, вероятно, проще всего сделать для каждого сайта:
cd /home/X
git clone -s /home/gitolite/repositories/X.git www.new
mv www www.old
mv www.new www
rm -r www.old
(опция -s
для клонирования гарантирует, что репозиторий /home/X/www/.git
не будет копировать данные из /home/gitolite/repositories/X.git
). И, наконец, вы должны установить крюк. Это уже объяснено в этом вопросе , но ваша ситуация немного проще. Поскольку данные находятся на одном сервере и под одним и тем же пользователем, вы можете просто установить хук после обновления во всех репозиториях gitolite, содержащих только:
#!/bin/sh
cd /home/X/www
git pull
Если вы когда-нибудь захотите переместить репозитории и веб-сервер на отдельные серверы (что я бы порекомендовал, потому что веб-сервер, если он обращен наружу, должен находиться в «демилитаризованной зоне», тогда как сервер git лучше в вашей внутренней сети за другой линией брандмауэров) вам, конечно, понадобится триггер ssh, описанный в этом другом вопросе.