Git Push у виробництво (FTP)


130

Мені хотілося б знати, чи є простий спосіб просунути сховище GIT у виробництво (на FTP-сервері)? Дякую

Відповіді:


162

Деякі інструменти, нещодавно додані до вікі Git :

git-ftp від Рене Мозера - простий скрипт оболонки для FTP Git способом. Використовуйте git-ftp.sh для завантаження лише відслідковуваних файлів Git на FTP-сервер, які змінилися з моменту останнього завантаження. Це економить час та пропускну здатність. Навіть якщо ви граєте з різними гілками, git-ftp.sh знає, які файли відрізняються. Жоден звичайний FTP-клієнт не може цього зробити.

git-ftp Edward Z. Yang - це простий скрипт, написаний на python для завантаження файлів у сховище Git через FTP, лише перенесення нових файлів та видалення старих файлів.


3
використовуючи git-ftp, чи є спосіб перенести просто підкаталог (наприклад, папку публікації котла html5) до вказаного каталогу ftp?
банда

А що робити, якщо в команді є кілька розробників. Чи все-таки можливо використовувати ці сценарії?
Trilliput

@Trilliput: Трохи пізно тут, але так, проміжний сервер / vm в мережі як місце, куди всі натискають
Pranav 웃

github.com/banago/PHPloy також робить подібну річ, але працює з підмодулями, і я підозрюю, що з деякими згаданими інструментами можуть боротися.
Саймон Схід

Основна проблема з git-ftp (не впевнений сценарій чи python). Я намагався, що це було дуже погано, коли ви завантажували великі куски файлів та довгий список файлів.
indianwebdevil

14

Якщо ви віддаєте перевагу графічний інтерфейс, використовуйте SourceTree, ви можете легко встановити власну дію, яка використовує згадані вище git-ftp. Короткий опис налаштування (для Mac) у Push 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

Якщо ви перебуваєте на комп'ютері та маєте передавач, я рекомендую наступний скрипт git-tranmit ( https://gist.github.com/379750 ). Він використовує DockSend для надсилання лише останніх оновлених файлів. Якщо ви не знайомі з DockSend, перегляньте http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Налаштування:

  1. cp git-tranit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-передача
  4. Надіслати крапку налаштувань для свого живого додатка
  5. Запустити git-передачу у своєму сховищі git.

1
Цей сценарій досить незграбний щодо вибору "останніх оновлених файлів". Перегляньте цю вилку для більш елегантного рішення.
quickshiftin

На додаток до цього, можливо, ви хочете передати лише відслідковані та некомплектні файли. Ось крихітний сценарій, який робить саме це: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Це не те, що саме git, власне кажучи. Однак якщо ваш джерело не потребує компіляції чи обробці, скажімо, веб-сайт, що складається повністю з файлів html та javascript тощо, ви можете мати клон репо на своєму веб-сервері та використовувати його git pullз сервера, щоб тримати його -на побачення. Зауважте, я налаштував би ваш веб-сервер, щоб приховати каталог git тощо. І це лише початок турбот про безпеку.

Якщо у вас є якісь компіляції чи обробки, вам слід почати дивитися на Ant , Maven , BuildR , SBT тощо.


29
Єдина проблема з цим полягає в тому, що у вас немає доступу до виробничого сервера, тобто це може бути простий хостинг із загальним доступом, лише доступ до FTP.
dodgy_coder

4

Ви можете використовувати Deployhq.com, він працює як шарм, єдине, що вам потрібно зробити, це налаштувати ваш сховище та FTP-акаунт.

Наразі вони мають такі системи управління версіями:

Git, Subversion, Mercurial.

З розміщеним сховищем

  • GitHub
  • Bitbucket
  • GitLab
  • Кодова база

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




1

Тут є сценарій Ruby - Ruby git-розгортання через FTP або SSH, який завантажує лише змінені файли в git repo через FTP або SSH.

Як було сказано в іншій відповіді, ось сценарій Python git-ftp.py, який робить подібне.

А ось версія сценарію оболонки git-ftp .

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


0

Якщо ви вводите код у виробництво, рекомендую використовувати інсталятор, наприклад пакет RPM, щоб встановити свій код. Таким чином він буде виведений з печаткою версії, і ви зможете використовувати пакет інсталятора для підтримки оновлень виробничого коду. Git насправді не призначений для підтримки виробничих установок, він призначений для відстеження змін у самому коді.

У будь-якому випадку, з вбудованим .RPM (або EXE або будь-яким іншим), ви можете просто FTP його до виробничої системи та встановити як будь-який інший пакет.


5
Що ж, git може досить ефективно використовувати для цієї мети насправді. Ознайомтеся з тегом і створіть гачки після оформлення замовлення, після злиття тощо, щоб обробити будь-які необхідні процедури встановлення. Ми звикли використовувати пакети RPM, але після переходу на git це було просто надмірно.
d11wtq

0

Додайте його як пульт, тоді ви можете натиснути на нього, однак просто натискання коду недостатньо, його потрібно об'єднати з робочим деревом. Найпростіший спосіб - пройти навпаки, мати робоче дерево на сервері та отримати та об'єднатись у це.



0

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

Перше, що спочатку: встановіть git і curl за допомогою варіння на 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"

Сподіваюся, це допомагає.


0

Ви можете спробувати FTPloy ...

https://ftploy.com

"Натисніть зміни на GitHub або Bitbucket."

"Внести зміни автоматично на ваш сервер"

У вас є один безкоштовний проект, щоб спробувати його. Зараз я використовую невеликий веб-сайт, і він працює досить добре. Кілька помилок на сайті, але його активний проект, так що принаймні вони над ним працюють.


1
Я відповів цю відповідь передчасно. FTPloy не зовсім готовий до виробництва, і там багато помилок. Я не міг змусити його працювати. Я використовую DeployHQ, який працює дуже добре.
Дейв Томпсон

0

Перевірте https://gitftp-deploy.com/, якщо ви користуєтесь MacOS і вам подобається графічний інтерфейс.

Це приємне маленьке додаток, яке використовує Git для відстеження змін та завантаження лише змінених файлів за допомогою FTP.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.