Развертывание сайта Git - PullRequest
3 голосов
/ 23 ноября 2011

Я сейчас настроил свой git для развертывания моего сайта.У меня есть мастер ветка, которая является живым состоянием сайта.Если я добавлю это к своему репо, сайт будет загружен.Тогда у меня есть развивающая ветка, где я могу проверить все.Это сработает, если я объединю его с живой веткой, а затем нажму.

Но у меня все еще есть проблема.Я нашел 2 решения для развертывания сайта с помощью git.Разница между этими двумя решениями заключается только в крючке, который используется.Для первого решения он использует git pull для создания моего корня www.Это означает, что мне нужен репо как root root.Второе решение использует git checkout -f, где он не должен быть репо.Я не знаю, какой из них лучше для моих нужд.

Моя проблема в том, что другие пользователи могут добавлять / изменять / удалять файлы на моем веб-сервере с помощью FTP-клиента.Проблема в том, что с помощью git ничего не передается.Теперь мне нужно получить изменения в моей основной ветке на моем репо.Но как я могу это сделать?Я думаю, что если корень www является репо, я должен сначала сделать коммит или что-то еще, а затем вытащить это к моему голому репо.Возможно ли это сделать, если корень www не является репо?Как я могу сделать это автоматически, чтобы получить содержимое моего корня www в моей главной ветке, если я потяну основную ветку?

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Если я правильно понимаю ваш сценарий, возможно, было бы лучше не переходить из корневого веб-каталога в исходное хранилище и извлекать его из этого хранилища на локальную машину.Не лучше ли синхронизировать файлы в вашем корне сети с вашим локальным репозиторием (например, с помощью rsync), обрабатывать все git-файлы на вашем локальном компьютере (diff, add, commit & c.) И переносить их в пустое репо, котороеможет, в свою очередь, снова вызвать проверку в вашем веб-корне?

0 голосов
/ 23 ноября 2011

Я думаю, что более стандартный способ сделать это - метод git checkout -f (или аналогичные методы, такие как git archive), где ваш www не является git-репо, а извлечен из чистого репо с использованием хуков, когда вы нажимаете на него.

Когда вы используете такую ​​штуку для развертывания, вы должны убедиться, что все принимают участие в git (и, в идеале, у вас должны быть CI, тесты и т. Д.), И запускаете это в производство.Вы не можете иметь людей, загружающих в производство через FTP и т. Д., А также иметь этот механизм на стороне.Это просто напрашивается на неприятности.

Если вы не можете помешать людям вносить такие изменения, тогда иметь корень www в качестве репо имеет больше смысла, так как вы можете отслеживать изменения и отправлять их в репо.Даже если это не репо, у вас все равно может быть другая настройка репо на сервере, где вы копируете файлы из корневого каталога www и фиксируете их.

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