2013-11-26 3 views
6

Я начинаю разворачивать несколько плагинов веб-сайта через git.Зачем использовать репозиторий git для развертывания веб-сайта?

Я прошел через несколько учебных пособий в Интернете, и все они рекомендуют создавать на удаленном репозитории голой удаленный репозиторий с помощью кэша после обновления для проверки в каталоге DocumentRoot. Я все это работаю без лишних проблем.

Почему мы отделяем репозиторий от рабочего каталога? Что не так с использованием каталога DocumentRoot в качестве репозитория, а затем с помощью htaccess для предотвращения открытого доступа к любому содержимому .git?

ответ

4

На самом деле, риски безопасности, присущие плохо сконфигурированному htaccess, являются серьезной причиной сами по себе, но основная причина заключается в том, что по умолчанию вы не можете нажать на отмеченную ветку не-голого репо. (. Он может быть включен, но требует git reset --hard обновить работу дерево, и не проще, чем иметь отдельный каталог развертывания)

0

Есть несколько вопросов здесь, что, в то время как связанные фактически обособлены

1 - Почему мы отделяем репозиторий от рабочего каталога?

Поскольку git запрещает вам переходить на выданную ветку по умолчанию. Поэтому вы никогда не можете нажимать на рабочий каталог, потому что по определению, если он находится на диске, он проверяется.

2 - Все они рекомендуют создавать голую удаленный репозиторий на веб-сервере

Implied вопрос: why a bare repo? Ну, голые репо просто мерзавец репо ничего проверили. Поэтому вы можете нажать на любую ветку на голой репо. Некоторые считают, что это проще поддерживать.

Второй подразумеваемый вопрос: is there an alternative to bare repos? Да, как упоминалось, ограничение распространяется только на проверенные ветки. Таким образом, вы все равно можете свободно нажимать на не проверенную ветку - возможно, «развернуть», а затем зацепить ее, чтобы объединить эту ветку без проверки в ваш рабочий каталог.

0
  1. Используйте DocumentRoot в качестве рабочего каталога мерзавца:

    • Используйте тянуть для обновления, необходимо внешний триггер или хрон или руководство Казнить
    • нужны ограничения доступа НТТР.Каталог мерзавец
    • ли мгновенное редактирование/взломать DocumentRoot можно использовать диф сравнить с историей мерзавца, хорошо для отладки/найти проблему
    • переключатель филиал легко
  2. Используйте отдельный голый мерзавец repostory

    • Пользователь может нажать на это репо и использовать post-update hook для обновления DocumentRoot
    • Обычно никто не хочет делать мгновенный взлом в git bare repo, модификация в DocumentRoot не может отличаться от истории git
    • DocumentRoot чистый
    • Переключатель филиал может понадобиться изменить крюк

Так, кажется, отдельный голый мерзавец репо является более чистой и простой в использовании, за исключением необходимости установки пост-обновление крючками.

План 1 также работает, используйте его в небольшом проекте или создайте mechine в порядке, но остерегайтесь привилегии доступа к каталогу .git, особенно при смене веб-сервера. например: nginx не поддерживает .htaccess, который часто хранится в git вместе с другими файлами проекта.

+0

Обратите внимание, что план голого репо по-прежнему позволяет вам мгновенно взломать documentRoot - только вы не можете его использовать для использования в будущем, поскольку крюк после обновления, скорее всего, уничтожит его. – slebetman

+0

Да, делать мгновенный взлом немного по-другому, я обновлю ответ. – Fwolf

Смежные вопросы