У вас, похоже, есть проблема с разрешением.Посмотрите разрешения на пути /var/www/*
и убедитесь, что у вашего пользователя git есть права на чтение / запись / удаление файлов.
Я использовал гораздо более простую технику 1005 * (вот подробный скрипт ), который позволил мне использовать мой сервер в качестве git-сервера с gitolite и развертывать на push безклонировать хранилище на пути /var/www/myproject
.Это работает для меня на git 1.7.9
и Ubuntu 12.04.1 LTS
с Apache/2.2.22
.
Создайте свое хранилище на сервере:
mkdir myproject.git && cd myproject.git
git init --bare
Настройте репозиторий:
git config core.worktree /var/www/myproject
git config core.bare false
git config receive.denycurrentbranch ignore
Отредактируйте или создайте hooks/post-receive
и сделайте его работоспособным
touch hooks/post-receive
chmod u+x hooks/post-receive
Вотсодержимое файла:
#!/bin/sh
git checkout -f
Вы готовы сделать push и заставить его работать.
Мой пользователь git называется git
, а мой apache использовал пользователя ubuntu
.Мне пришлось отредактировать конфигурацию apache на /etc/apache2/conf.d/security
(вы также можете сделать это на /etc/apache2/http.conf
), чтобы включить:
User git
Group git
Теперь мой /var/www/myproject
развертывает все файлы на push, создавая файлы сgit:git
пользователь / группа и мой apache для запуска используют одного и того же пользователя / группу.
Теперь вам просто нужно перезагрузить сервер или сделать service apache2 restart