Загрузка данных по FTP с использованием Mercurial

На сегодняшний день редкий проект по разработке ПО обходится без использования системы контроля версий. Без нее достаточно сложно отследить, когда в код были внесены какие изменения, вернуться к предыдущей версии, разобраться, кто из разработчиков написал определенный фрагмент кода.

В частности это относится и к веб-проектам. Здесь у системы контроля версий есть еще одна очень важная задача — заливка кода на сервер. Когда мы по-старинке заливали файлы на сервера простым копированием файлов, достаточно сложно было каждый раз вспоминать, какие файлы изменились и должны быть перезалиты на сервер. При использовании системы контроля версий (например Mercurial) эта проблема с наших плеч спадает: мы создаем на сервере копию репозитория (не забыв запретить доступ через HTTP к директории .hg) и простым выполнением команды hg push можем обновлять код на сервере. При этом доступ к серверу мы можем осуществлять, например, по протоколу SSH.

Что же делать, если мы используем дешевый хостинг, который предоставляет доступ на свой сервер только по FTP? Разумеется по FTP загрузить репозиторий Mercurial обычным способом не получится.

Для таких ситуаций существует расширение для Mercurial, называемое FTPExtension.

Опишу пошагово процесс установки и использования расширения:

  1. Создаем директорию, куда будет загружено расширение. Загружаем расширение следующей командой:
    hg clone https://bitbucket.org/misery/hgftp
  2. Открываем файл кофигурации ~/.hg/hgrc (в данном случае мы редактируем общую конфигурацию пользователя, которая будет использоваться для всех репоизториев, с которыми он работает; тоже самое можно сделать и для файла .hgrc конкретного репозитория). Добавляем туда следующие строки:
    [extensions]
    hgext.ftp = /path/to/ftp.py
  3. В файле .hgrc прописываем адрес ftp-сервера:
    [paths]
    deploy = ftp://vasya:123@myfavoritehosting/my_site_directory
  4. После этого текущую ревизию можно будет загрузить на сервер следующей командой (история изменений на сервер загружена не будет, так что резервную копию храним в другом месте):
    hg ftp -u deploy
  5. Обратите внимание, что если мы раньше уже загружали этот проект на этот сервер, то сейчас будут загружены только изменившиеся файлы. Если мы хотим, чтобы загрузились все файлы, добавляем ключ -a:
    hg ftp -au deploy

Теперь мы можем загружать изменения практически на любой хостинг одной командой, не тратя силы на то, чтобы отследить, какие файлы нужно загружать.
Ссылки:

  1. Введение в Mercurial
  2. FTP Extension
  3. Using Mercurial Extensions

© Григорий Кощеев, lug.nsk.ru, 2012 г.
Лицензия Creative Commons
Это произведение доступно по лицензии Creative Commons Attribution-ShareAlike (Атрибуция — С сохранением условий) 3.0 Непортированная.

Загрузка данных по FTP с использованием Mercurial: 3 комментария

Добавить комментарий