Получить изменения с сайта mercurial на FTP
Я работаю с партнером на PHP-сайте для клиента. У нас есть общий Mercurial-репозиторий (на Bitbucket), как локальные копии, так и живые сайты. У нас есть только FTP-доступ к текущему сайту (который не может быть изменен, поскольку это пакет хостинга только с FTP).
Я хочу, чтобы иметь возможность перенаправлять изменения из репозитория на сайт в реальном времени.
До сих пор я просто отслеживаю измененные файлы в репо и копирую их вручную с помощью FileZilla - подверженной ошибкам и раздражающей задачи. Моя идея состоит в том, чтобы локально локализовать удаленное местоположение (т.е. С помощью CurlFtpFS) и сказать mercurial, чтобы автоматически копировать измененные файлы на сайт. В идеале я хочу указать, какие изменения, но это будет бонус. Было бы достаточно, если локальное состояние файлов в репо синхронизируется.
Есть ли хороший способ сделать это с помощью средств командной строки linux?
Ответы
Ответ 1
Моя первая рекомендация, если это вообще возможно, получить пакет, который позволяет больше доступа. FTP только жесток.
Но поскольку вы ищете реальный ответ на свой вопрос, у меня есть две идеи для вас:
-
Я бы предложил посмотреть на mercurial FTP-расширение. Я лично никогда не использовал его, так как я никогда не зацикливался на ситуации, связанной с ftp (хотя бы надолго), но выглядит многообещающим. Похоже, если вы убедитесь, что вы помечаете свои выпуски, это будет очень хорошо работать для вас. (обязательно используйте параметр -uploaded)
-
Кроме того, если вы только хотите, чтобы наконечник был установлен на вашем рабочем env, вы можете посмотреть предложение Martin Geisler сделанное на несколько дней назад, группа пользователей bitbucket. В принципе, его предложение состоит в том, чтобы использовать функциональность "ping url" битбакет. Вам нужно будет написать серверный обработчик script/url, который будет принимать этот пинг, затем вытащить наконечник из битбакета (в виде zip файла), а затем распаковать/распаковать его. Это немного сложно, но если вы ищете полную автоматизацию, и наконечник всегда будет лучшим, это может сработать для вас.
Ответ 2
Одно из них - использование команды hg archive
:
hg archive /path/to/curlftpsfs
который поместит моментальный снимок вашего репо в этом месте - он, однако, перезапишет любой уже существующий файл.
Другой вариант - создать клон Mercurial в том же /path/to/curlftpsfs
, а затем просто сделать hg pull ; hg update
в нем на вашей локальной системе с удаленным. Первоначально установка этого будет означать передачу всего этого, но в дальнейшем вы будете отправлять только дельта.
Некоторым людям не нравятся эти последние параметры, поскольку он предоставляет весь ваш репозиторий /.hg
, но вы можете заблокировать доступ к нему на веб-сервере.
Ответ 3
Я столкнулся с этой проблемой некоторое время назад после переключения с AWS на локальный веб-хостинг, который обеспечивает только ssh/ftp.
Мой предыдущий подход к обновлению производственного сайта на AWS с использованием "hg pull; hg update -C" больше не может использоваться на новом веб-хостинге. Они не имеют меркурий, установленных для общих хостов.
Итак, я сделал, чтобы смонтировать удаленное местоположение с помощью ftp, на локальный компьютер (т.е. ваш ноутбук), а затем запустить команды hg pull и update локально на вашем компьютере по пути, на котором установлен удаленный ftp-сайт.
Ответ 4
Решение для Windows:
BeyondCompare (http://www.scootersoftware.com/) - потрясающая часть программного обеспечения. Помимо того, что он является удивительным, он может отображать вашу локальную папку на FTP-сайте. Он сравнивает файлы и передает только новые.