Я настроил свою рабочую структуру git следующим образом (благодаря рекомендации в другом вопросе git: небольшая работа над проектом )
/live/website
|
|
/path/to/staging (bare)
| |
| |
dev1 dev2
В настоящее время и dev1, и dev2 нажимаютпроекты на /path/to/staging repo
.У меня есть хук в / path / to / staging, который автоматически запускает git pull
с моего / live / веб-сайта.Таким образом, у меня есть рабочая копия файлов.
Также /path/to/staging (bare)
был инициализирован с share = 0777, так что я точно знаю, что ресурс не является проблемой.Кроме того, я установил CHMOD для всех файлов на 777 и установил бит флешки.
Я создал репозиторий / live / website как user : root
.Тем не менее, я создал репо в dev1 как user : dev1
.Я могу вносить изменения в dev1 нормально, однако, когда я пытаюсь вытолкнуть репо из dev1, вот проблема, с которой я сталкиваюсь:
error: Couldn't set refs/remotes/origin/master
From /path/to/staging
! 8b4fddc2 .. e2a0b21 master -> origin/master (unable to update local ref)
To path/to/staging
8c5fddc2 .. e2a0b21 master -> master
И в принципе, я не вижу успешной передачи файлов в / live /Веб-сайт.Я думаю, что эта проблема возникает, так как я выполняю код как user : dev1
.Однако, когда я перехожу к /live/websit
e и выполняю git pull
вручную как user : root
, он успешно извлекает изменения, внесенные dev1, и изменяет рабочий файл.
Может кто-то порекомендовать, если естьспособ обойти эту проблему?Так как это превосходит цель автоматического хука ...
Что-то еще, что я думал сделать, было в хуке, я думал о смене пользователя:
su root
password
Однако, когдаон выполняется, я не думаю, что я ввожу пароль в приглашении, так как полученное сообщение об ошибке:
hooks/post-receive: line 18: password: command not found
РЕДАКТИРОВАТЬ,
Кроме того, может кто-топредложить способ вернуться от толчка?И получить предыдущее состояние файлов?