Git Push в производство (FTP)

130

Я хотел бы знать, есть ли простой способ запустить репозиторий GIT в производство (на FTP-сервере)? Спасибо

Roch
источник

Ответы:

162

Некоторые инструменты, недавно добавленные в вики Git :

git-ftp от Рене Мозера - это простой сценарий оболочки для работы с FTP в стиле Git. Используйте git-ftp.sh для загрузки на FTP-сервер только файлов, отслеживаемых Git, которые изменились с момента последней загрузки. Это экономит время и пропускную способность. Даже если вы играете с разными ветками, git-ftp.sh знает, какие файлы разные. Ни один обычный FTP-клиент не может этого сделать.

git-ftp от Эдварда З. Янга - это простой скрипт, написанный на python для загрузки файлов в репозиторий Git через FTP, только для передачи новых файлов и удаления старых файлов.

Тим Хениган
источник
3
используя git-ftp, есть ли способ поместить только подкаталог (например, папку публикации шаблона html5) в указанный каталог ftp?
банда
А что, если в команде несколько разработчиков. Можно ли еще использовать эти скрипты?
Trilliput
@Trilliput: здесь немного поздно, но да, промежуточный сервер / виртуальная машина в сети как место, куда все нажимают, а затем: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃 03
github.com/banago/PHPloy также делает то же самое, но работает с подмодулями, с которыми, как я подозреваю, могут возникнуть проблемы с некоторыми из упомянутых инструментов.
Саймон Ист
Основная проблема с git-ftp (не уверен, что скрипт или python), которые я пробовал, была очень плохой при загрузке больших кусков файлов и длинного списка файлов.
indianwebdevil 01
14

Если вы предпочитаете графический интерфейс, используйте SourceTree, вы можете легко настроить настраиваемое действие, которое использует git-ftp, упомянутый выше. Краткое описание установки (для Mac) на странице «Отправка репозитория Git на FTP».

введите описание изображения здесь

Гери Борбас
источник
@Julix За упомянутую статью.
Geri Borbás
11

Я нашел PHPloy отличным инструментом для отправки ваших коммитов Git на удаленные серверы через FTP. Он работает из командной строки и написан на PHP (и даже обнаруживает изменения в подмодулях).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Готово!

(Отказ от ответственности: после некоторого использования я внес несколько исправлений и улучшений кода, сделав его совместимым с Windows.)

Саймон Ист
источник
10

Если вы используете Mac и у вас есть Transmit, я бы порекомендовал следующий скрипт git-tranmit ( https://gist.github.com/379750 ). Он использует DockSend для отправки только последних обновленных файлов. Если вы не знакомы с DockSend, посетите http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Настроить:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transfer
  4. Настройка drop send для вашего живого приложения
  5. Запустите git-transfer в своем репозитории git.
Роб Сойер
источник
1
Этот сценарий довольно неуклюж с выбором «последних обновленных файлов». Посмотрите на эту вилку, чтобы найти более элегантное решение.
quickshiftin
В дополнение к этому вы можете передавать только отслеживаемые и незафиксированные файлы. Вот крохотный скрипт, который именно это и делает: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur
5

Строго говоря, git не для этого. Однако, если ваш источник - это то, что не требует компиляции или обработки, скажем, веб-сайт, полностью состоящий из файлов html и javascript и т.п., вы можете иметь клон репо на своем веб-сервере и использовать его git pullс сервера, чтобы поддерживать его. -назначить свидание. Обратите внимание, я бы настроил ваш веб-сервер, чтобы скрыть каталог git и тому подобное. И это только начало проблем безопасности.

Если у вас есть какая-либо компиляция или обработка, вам следует начать смотреть на Ant , Maven , BuildR , SBT и т. Д.

sblundy
источник
29
Единственная проблема с этим - когда у вас нет доступа к производственному серверу, то есть это может быть простой общий хостинг с доступом только по FTP.
dodgy_coder
4

Вы можете использовать Deployhq.com, он работает как шарм, единственное, что вам нужно сделать, это настроить свой репозиторий и учетную запись FTP.

На данный момент это следующие системы контроля версий:

Git, Subversion, Mercurial.

С размещенным репозиторием

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

введите описание изображения здесь

joelmez4
источник
1

Здесь есть сценарий Ruby - Ruby git-deploy через FTP или SSH, который загружает только измененные файлы в репозиторий git через FTP или SSH.

Как упоминалось в другом ответе, вот сценарий Python git-ftp.py, который делает то же самое.

А вот версия сценария оболочки git-ftp .

Существует также проект драгоценного камня Ruby под названием git-deploy, который позволяет настраивать настраиваемое развертывание через пульт git с помощью git pushкоманды, так же, как службы Heroku и Azure. Для этого вам может потребоваться написать собственные методы для развертывания через FTP, и я думаю, что он предполагает, что у вас есть SSH-доступ к вашему производственному серверу.

dodgy_coder
источник
0

Если вы вводите код в производство, я рекомендую использовать «установщик», например пакет RPM, для установки вашего кода. Таким образом, в нем будет указана версия, и вы сможете использовать пакет установщика для поддержки обновлений производственного кода. Git на самом деле не предназначен для поддержки производственных установок, он предназначен для отслеживания изменений самого кода.

В любом случае, со встроенным .RPM (или EXE или чем-то еще) вы можете просто отправить его по FTP в производственную систему и установить, как любой другой пакет.

Джастин этир
источник
5
Что ж, на самом деле для этой цели можно использовать git. Проверьте тег и создайте хуки после оформления заказа, после слияния и т. Д. Для выполнения любых необходимых процедур установки. Раньше мы использовали пакеты RPM, но после перехода на git это было просто перебором.
d11wtq 01
0

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

d11wtq
источник
0

Я очень старался понять это. Я нашел простой способ сделать это из различных источников ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Вы можете прочитать для справки, но в этом нет необходимости, потому что я упомянул пошаговый процесс ниже.

Перво-наперво: установите git и curl с помощью brew в MAC OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Запустите следующие команды:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Обновление с помощью git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Настроить

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Загрузить все файлы

git ftp init

Или если файлы уже есть

git ftp catchup

Работа и развертывание

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Если есть ошибка: pathspec 'index.txt' не соответствует ни одному файлу (файлам), известным git . Это означает, что файл еще не был подготовлен, поэтому добавьте файл и попробуйте зафиксировать.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Надеюсь это поможет.

Sdembla
источник
0

Вы можете попробовать FTPloy ...

https://ftploy.com

«Отправьте изменения на GitHub или Bitbucket».

"Автоматическое развертывание изменений на вашем сервере"

У вас есть один бесплатный проект, над которым вы можете попробовать. В настоящее время я использую для небольшого веб-сайта php, и он работает довольно хорошо. На сайте есть несколько ошибок, но это активный проект, так что, по крайней мере, они над ним работают.

Дэйв Томпсон
источник
1
Я отправил этот ответ раньше времени. FTPloy не совсем готов к работе, и в нем много ошибок. Я не мог заставить его работать. Я использую DeployHQ, которое работает очень хорошо.
Дэйв Томпсон,
0

Посетите https://gitftp-deploy.com/, если вы используете MacOS и вам нравятся графические интерфейсы.

Это симпатичное маленькое приложение, которое использует Git для отслеживания изменений и загрузки только измененных файлов через FTP.

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

bramchi
источник