git и автоматический upload на фтп

s@nch0

Хочу всё знать
Есть репозиторий git. Необходимо после каждого push закачивать новые или изменённые файлы на ftp. Как это можно сделать средствами самого git ?

Интересует готовое решение.

Спасибо.
 

Dovg

Продвинутый новичок
hooks же.
Но вообще ftp - это какой-то не очень хороший протокол для этой цели.
 

s@nch0

Хочу всё знать
Ок, можно и не по фтп. Выслушаю любые предложения...
 

Dovg

Продвинутый новичок
echo "git pull" | ssh remote-server
например.
Почему бы доставку гита не делать гитом?
 

s@nch0

Хочу всё знать
Я так понимаю, что нужно будет создать bash, который будет вызываться через хук на команду push и делать pull на remote-server %)
Но там ведь нет репозитория ? Как туда можно сделать pull ?

Может я плохо объяснил. Суть вот в чём. Есть рабочие сайты. Необходимо для них создать репозитории и чтоб каждые изменения в репозитории моментально отображались на самих сайтах, т.е. чтоб файлы заливались в папочку www грубо говоря.
 

s@nch0

Хочу всё знать
Репозиторий и "www файлы" находятся на одном сервере.
 

Фанат

oncle terrible
Команда форума
Ох, я бы не стал так делать.
Коммит - это коммит, а деплой - это деплой...
 

s@nch0

Хочу всё знать
Сейчас ситуация ещё хуже. Все изменения заливаются сразу на фтп, т.е. отладил код на локалке и средствами IDE залил файл на сервак. И если на продакшене что-то пошло не так, вылезет лажа.
А если лажу не заметили сразу, то спустя пару дней сложно понять, кто накосячил и т.д.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Код:
[gorbunov@pvldev sck2]$ git fetch; git merge master origin/master
remote: Counting objects: 19, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 10 (delta 8), reused 0 (delta 0)
Unpacking objects: 100% (10/10), done.
From https://bitbucket.org/kaznetmedia/sck2
   28ac347..c0e3e50  master     -> origin/master
Already up-to-date with master
Trying simple merge with origin/master
Merge made by octopus.
 application/i18n/en.php              |  751 ++++++++++++++++----------------
 application/i18n/kz.php              |  765 +++++++++++++++++-----------------
 application/i18n/ru.php              |  777 +++++++++++++++++-----------------
 application/views/layout/header.twig |  167 ++++----
 4 files changed, 1232 insertions(+), 1228 deletions(-)
[gorbunov@pvldev sck2]$
 

флоппик

promotor fidei
Команда форума
Партнер клуба
origin/master смотрит на стабильную ветку псевдоцентрального репозитория, в нашем случае — битбакета.
 

s@nch0

Хочу всё знать
artoodetoo
Спасибо за статью, почитаю.

Кстати, не понимаю. Почему не пришёл в голову такой вариант. Создать репозиторий в самой папке www. В результате имеем:
1. историю версий изменения файлов
2. после каждого push все изменения отображаются на сайте.
 

s@nch0

Хочу всё знать
Прочитал статью, насколько я понял, то смысл двух репов только в том, чтоб не поломать репозиторий, если кто-то внесёт какие-то изменения напрямую через фтп ?
 

artoodetoo

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

s@nch0

Хочу всё знать
Нет, всё же лучше иметь отдельную диру для репозитория, а live версию держать отдельно: либо как ещё один реп, либо просто как www директория и синхронизировать по фтп или ещё как-то...
Тогда можно в репу добавить только нужные файлы: *.php, *.js и т.д.
А всякие картинки и прочее заливать по фтп, через отдельный доступ, в котором не будет доступа к ядру сайта.
 

fixxxer

К.О.
Партнер клуба
во первых надо прекратить пользоваться ftp навсегда. забыть о нем нафиг.
во вторых надо прекратить вообще заходить на сервер руками, кроме крайне необходимых случаев - деплой к такому случаю не относится
в третьих, надо разделить код и данные на отдельные директории. немного поясню, картинка логотипа в панели управления - это "код", загружаемое пользователем сайта фото это "данные"
в четвертых, надо научиться из гита получать архив с кодом, готовый для разворачивания на сервере одной распаковкой (и, возможно, одним запуском шелл-скрипта из этого архива). вместо архива может быть пакет (.rpm/.deb), если очень хочется :)
 

s@nch0

Хочу всё знать
fixxxer
Вот! Ту же схему я и хочу реализовать, но только автоматически хотелось бы это всё делать.

Кто поделится наработками ? :)
 
Сверху