проблема с разрешением git hook - PullRequest
2 голосов
/ 09 декабря 2010

Я настроил свою рабочую структуру 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

РЕДАКТИРОВАТЬ,

Кроме того, может кто-топредложить способ вернуться от толчка?И получить предыдущее состояние файлов?

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Я использую аналогичный рабочий процесс, и у меня даже нет корневого доступа на живом веб-сервере, и он все еще работает нормально. Вот скрипт, который я использую (это ловушка после получения; я полагаю, это может быть ловушка после обновления, но я ее не проверял):

#!/bin/sh
# To enable this hook, make this file executable by "chmod +x post-receive".
GIT_WORK_TREE=/path/to/htdocs git checkout -f

Затем вы можете проверить ловушку, запустив hooks / post-receive. Если он работает, когда вы тестируете его вручную, он должен работать, когда вы запускаете "git push"

1 голос
/ 09 декабря 2010

AFAIK, вы не можете дать su пароль в командной строке. Но вы можете использовать sudo, добавить разрешенного пользователя в / etc / sudoers без пароля , чтобы вы могли выполнить команду как sudo -u webside-user-name 'cd /live/website && git fetch && git checkout master'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...