Как разворачивать только коммит в удаленном git репозитории через хук?
Добрый день.
1) Есть локальный репозиторий и удаленный bare-репозиторий. Настроен post-receive хук для разворачивания в рабочий каталог. При пуше в рабочем каталоге на удаленном сервере подменяются файлы не только из коммита. Например, файлы с конфигом. На локальном они сначала были в индексе, затем добавлены в gitignore и затем удалены из индекса (rm --cached), но всё равно разворачиваются на удаленном сервере после не затрагивающего их коммита.
2) Также настроены необходимые права на файлы и каталоги. После пуша всё, что в индексе, меняет владельца и права. Как можно скорректировать или сохранять текущие права? На chmod не хотелось бы давать nopassword пользователю, если в хуке, например, потом менять права обратно.
#!/bin/sh
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
echo "Master ref received"
git --work-tree=/[рабочий каталог]/ --git-dir=/[каталог с репозиторием].git checkout -f
else
echo "Only the master branch may be deployed on this server."
fi
done