Получить изменения с Mercurial на FTP-сайт - PullRequest
11 голосов
/ 15 марта 2011

Я работаю с партнером на PHP-сайте для клиента. У нас есть общий репозиторий Mercurial (на Bitbucket), как локальные копии, так и живой сайт. У нас есть только FTP-доступ к действующему сайту (который нельзя изменить, поскольку это хостинг-пакет только с FTP).

Я хочу иметь возможность передавать изменения из репозитория на работающий сайт.

До сих пор я просто отслеживаю измененные файлы в репозитории и копирую их вручную с помощью FileZilla - подверженной ошибкам и раздражающей задаче. Моя идея состоит в том, чтобы монтировать удаленное местоположение локально (то есть, используя CurlFtpFS ) и указывать Mercurial автоматически копировать измененные файлы на сайт. В идеале я хочу иметь возможность указать, какие изменения, но это было бы бонусом. Было бы достаточно, если бы локальное состояние файлов в репозитории было синхронизировано.

Есть ли хороший способ сделать это с помощью инструментов командной строки Linux?

Ответы [ 4 ]

7 голосов
/ 15 марта 2011

Моя первая рекомендация, если это вообще возможно, получить пакет, который предоставляет больше доступа. FTP только жестокий.

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

  1. Я бы посоветовал взглянуть на Mercurial Расширение FTP . Лично я никогда не использовал его, так как никогда не застревал в ситуации только с ftp (по крайней мере, на долгое время), но это выглядит многообещающе. Похоже, если вы убедитесь, что вы пометили свои производственные релизы, это будет работать очень хорошо для вас. (обязательно используйте параметр -uploaded)

  2. Кроме того, если вы хотите, чтобы наконечник устанавливался только в вашей рабочей среде, вы можете посмотреть на предложение Мартина Гейслера , сделанное для группы пользователей bitbucket несколько дней назад. По сути, он предлагает использовать функциональность "ping url" для bitbucket. Вы должны написать серверный скрипт / обработчик URL-адреса, который будет принимать этот пинг, затем извлечь подсказку из bitbucket (в виде zip-файла), а затем распаковать / распаковать его. Это немного сложно, но если вы ищете полную автоматизацию, и совет всегда будет лучшим, это может сработать для вас.

2 голосов
/ 16 марта 2011

Одним из понятий является использование команды hg archive:

hg archive /path/to/curlftpsfs

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

Другой вариант - создать клон Mercurial в том же /path/to/curlftpsfs, а затем просто выполнить hg pull ; hg update в вашей локальной системе с подключенным удаленным. Первоначальная настройка будет означать передачу всего, но впоследствии вы будете отправлять только дельты.

Некоторым людям не нравятся эти последние опции, потому что он также предоставляет весь ваш репозиторий /.hg, но вы можете заблокировать доступ к нему на веб-сервере.

1 голос
/ 10 декабря 2013

Я столкнулся с этой проблемой некоторое время назад после перехода с AWS на локальный веб-хостинг, который предоставляет только ssh / ftp.

Мой предыдущий подход к обновлению рабочего сайта в AWS с использованием "hg pull; hg update -C" больше не может использоваться на новом веб-хостинге. У них не установлено Mercurial для общих хостов.

Итак, я установил удаленное местоположение с помощью ftp на локальном компьютере (т.е. на вашем ноутбуке), затем запустил команды hg pull и обновил локально на вашем компьютере по пути, на котором смонтирован удаленный сайт ftp.

0 голосов
/ 26 августа 2012

Windows решение:

BeyondCompare (http://www.scootersoftware.com/) - это отличная программа. Помимо того, что она великолепна, она может отражать вашу локальную папку на FTP-сайт. Она сравнивает файлы и передает только то, что ново.

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