Ж у р н а л   о   к о м п ь ю т е р н ы х   с е т я х   и   т е л е к о м м у н и к а ц и о н н ы х   т е х н о л о г и я х
СЕТИ И СИСТЕМЫ СВЯЗИ on-line
  ПОИСК: ПОДПИСКА НА НОВОСТИ: НОМЕР:
    ДОМОЙ • Архив: Новостей | Конференций | НомеровПодписка
 
   
 
   
    
РЕДАКЦИЯ
 
Все о журнале
Подписка
Как проехать
Где купить
Отдел рекламы
График выхода журнала
Адреса в Интернет

РУБРИКАТОР
   
• Инфраструктура
• Информационные
   системы

• Сети связи
• Защита данных
• Кабельные системы
• Бизнес
• Колонка редактора
• Электронная
   коммерция

• Только на сервере
• Системы
   учрежденческой
   связи

• Новые продукты


Rambler's Top100

  

Управление Web-проектами с помощью CVS

Эл Уилльямз

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

Программисты, пишущие на таких языках, как Си и Java, уже давно используют средства контроля версий разрабатываемого ПО, которые позволяют им эффективно управлять своими проектами. Я не перестаю удивляться, почему разработчики Web-сайтов не делает то же самое. Кое-кто может возразить мне, что, дескать, управление версиями ПО накладывает на группы Web-разработчиков, не отличающиеся, как правило, особой организованностью, слишком много ограничений и практически становится бесполезным для них. В действительности, современные инструментальные средства контроля версий ПО могут сделать разработку Web-продуктов куда более эффективной и даже облегчить выполнение проектов слабо организованными командами.

Представьте себе, что вы сидите в гостиничном номере в каком-нибудь захолустье и не знаете, куда деваться от скуки. Но вот вам в голову пришла неплохая идея -- слегка изменить Web-сайт вашей компании. Вы дозваниваетесь до Интернет-провайдера, устанавливаете VPN-соединение с корпоративной сетью, выгружаете с сервера текущую версию сайта и принимаетесь за работу. Сначала вы модифицируете главную страницу (/), а затем -- одну из страниц более низкого уровня (например, history.html). Однако полученный результат не совсем устраивает вас, и, захлопнув свой ноутбук, вы идете спать. Утром, сидя в салоне самолета, вы продолжаете прерванную работу в режиме off-line (ввиду отсутствия на борту Интернет-соединения). И наконец, вы заканчиваете ее уже в другом гостиничном номере (ведь вам, как и многим другим людям, приходится часто колесить по стране).

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

Дальше выясняется, что проблема гораздо серьезнее, чем кажется на первый взгляд. Обнаружены различия между текущей версией файла / и той, которую вы выгрузили вчера. Пока вы летели, кто-то еще успел внести в него свои изменения. Теперь уже вам нужно установить разницу между текущей версией файла и той, с которой вы работаете, и найти способ объединения ваших и чужих изменений еще в одной копии файла.

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

Преимущества системы CVS

Одной из лучших систем контроля версий ПО является Concurrent Version System (CVS). CVS распространяется с открытым исходным кодом и может быть бесплатно загружена с Web-страницы одноименного проекта (http://www.cvshome.org). Версии этой системы имеются для многих платформ, включая Windows. Кроме того, она входит в комплект многих дистрибутивов Linux. Я часто использую CVS на серверах Linux и HP/UX, а также на своей настольной системе Windows с установленным ПО Cygwin (см. Сети и системы связи. 2002. № 12. С. 62.). Для CVS также имеются различные Web-интерфейсы.

Если прежние пакеты управления версиями были лучше приспособлены для разработки традиционного программного обеспечения, то система CVS предоставляет несколько полезных возможностей, по-видимому, специально предназначенных для разработки Web-узлов. Что касается большинства продуктов управления версиями ПО, то там разработчики "выписывают" (check out) файлы, которые собираются модифицировать, из общего хранилища. Как правило, если один человек "выписал" данный файл, то его не может "выписать" уже никто другой. Система CVS работает иначе.

Используя CVS, вы подключаетесь к своему серверу и копируете весь Web-сайт в новую директорию. В отличие от многих других систем контроля версий, здесь "выписка" не запрещает другим людям работать над теми же файлами, над которыми работаете вы (в этом и заключается смысл слова "concurrent" в названии системы). Процедура "выписки" файлов просто дает вам возможность получить самые свежие их копии.

Если какие-то файлы вы не модифицировали локально, а просто слегка изменили прямо на сервере, то CVS обновит их локальные копии. Система также может подтвердить, что конкретный файл никто, кроме вас не изменял. При возникновении конфликта вы можете потребовать от системы показать вам различия между вашими файлами и текущими файлами на сервере. У вас имеется возможность либо разрешить конфликты вручную, либо предоставить самой CVS автоматически объединить две версии файла в одну (что, как вы сами понимаете, не всегда возможно).

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

Зачем нужна система CVS?

По сравнению с более ранними системами контроля версий ПО, такими, как Revision Control System, CVS обладает более широкими возможностями. Используя CVS, вы можете отследить, кто, когда и почему вносил изменения в ПО, -- предполагается, что каждый разработчик, возвращая модифицированную копию, заносит подробные комментарии в журнал CVS. При возвращении модифицированных файлов, CVS предоставляет вам возможность оставить свои комментарии в журнале изменений, чтобы другие люди могли видеть, что же конкретно вы сделали. Вы можете в любое время узнать, чем отличается текущая версия сайта от той версии, которую вы используете (и которая может содержать файлы фактически не измененные вами).

Благодаря функции автоматического объединения ваши изменения как и другие изменения чаще всего просто добавляются к модифицируемому файлу. Вы можете создать моментальный снимок группы файлов для последующего использования. Например, можно создать версию корпоративного Web-сайта специально для торговых выставок и инсталлировать ее на несколько ноутбуков. Тем временем разработка Web-узла может продолжаться, а вы всегда сумеете воспроизвести "выставочную" версию, если она вам неожиданно потребуется (например, для инсталляции на еще одном ноутбуке или, возможно, на удаленном сервере).

Теперь представьте, что во время выставки вы получаете срочный звонок: требуется экстренно устранить ошибку в содержимом Web-узла. Вы не хотите рисковать, выписывая самую последнюю, не протестированную версию узла, работа над которой все еще продолжается. Вместо этого вы извлекаете из хранилища более раннюю его версию и выполняете коррекцию тех файлов, которые установлены на "выставочных" машинах. Позднее, если у вас появится желание, к этим изменениям вы можете добавить изменения из последней разрабатываемой версии.

Возможность сохранения старых версий файлов, предоставляемая системой CVS, находит применение и в других случаях. Увидев, например, свой сайт таким, каким он был год (или месяц) назад, вы можете легко оценить, насколько он стал лучше. Или, может быть, вы обнаружили недопустимую ошибку в ПО и хотите восстановить его стабильную версию на производственном сервере. Повернуть время вспять, используя CVS, ничего не стоит.

Учитывая тот факт, что CVS может сообщить вам, какие конкретные изменения были внесены в файлы, их обновление на производственном сервере не представляет труда. Если вы используете одни и те же файлы (например, PHP-сценарии ) на нескольких серверах, то CVS легко укажет вам, какие из них являются самыми свежими, а какие требуют обновления.

Подводные камни

Если вы намерены развернуть систему CVS, то сначала необходимо разрешить ряд проблем. Прежде всего, нужно более или менее синхронизировать системные часы всех клиентских машин. В противном случае разобраться в журнале изменений системы CVS будет практически невозможно.

Следующая проблема -- бинарные файлы. CVS хорошо подходит для ASP, HTML, PHP и других текстовых файлов. Однако файлы формата GIF, JPG и другие не текстовые файлы -- это слабая сторона системы. CVS не способна ни определять, в чем разница между новыми и старыми версиями этих файлов, ни приводить различия между ними к "общему знаменателю". Она может лишь "сказать" вам, что "файлы отличаются" (установив это либо путем побайтового их сравнения, либо используя опцию "-а" утилиты GNU diff, если вы включили ее, конфигурируя CVS), и тогда вы сохраните их как отдельные версии (но объединить их в один файл не сможете).

Если ваш Web-сайт содержит только HTML-страницы и локальные сценарии, каждый разработчик может тестировать их, работая с персональным Web-сервером, который запускается на его собственном компьютере. Однако, если ваш сайт управляется посредством СУБД, то его разработку следует спланировать тщательно, чтобы в конце концов не оказаться в отчаянном положении. Выходом из такого положения может стать общая БД, разделяемая всеми разработчиками (а возможно, и общий Web-сервер разработки). В этом случае процесс публикации контента должен предусматривать переопределение ссылок на производственные БД и Web-сервер.

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

Другая потенциальная проблема возникает в том случае, когда ваши разработчики работают на разных платформах. Система CVS применяется в самых разных сетевых средах, поэтому теоретически ваши разработчики могут использовать ОС Unix, Mac OS, Windows или любые их комбинации. Я, например, часто разрабатываю сайты в среде Windows для развертывания их на системах Linux

С одной стороны, ОС Windows, например, "не различает" регистры букв, поэтому код, работающий на системах Windows, может не работать на чувствительных к регистру системах Linux. С другой стороны, в среде Linux можно модифицировать код, оперируя символическими ссылками, что приводит к его неработоспособности на не поддерживающих их системах Windows. Эта проблема не присуща самой системе CVS, использование которой делает ее более очевидной.

Другие соображения

Сконфигурированная соответствующим образом система CVS предоставляет целый ряд других полезных сервисов. Например, разработчики могут получать электронные почтовые уведомления при любых изменениях файлов или обновлять свои файлы до самых последних версий в любое время. Кроме того, система CVS покажет вам, какие файлы необходимо опубликовать на Web-сервере.

Другой возможностью системы является регулярное автоматическое формирование моментальных снимков сайта -- например, каждый вечер. Такая возможность -- один из способов его резервного копирования. Она особенно полезна тем разработчикам, которые не умеют пользоваться системой CVS (правда, это нарушает ее модель и требует тщательного контроля во избежание негативных последствий).

Конечно, CVS -- это не единственная система контроля версий ПО. Вы можете рассмотреть и другие аналогичные продукты. Важным моментом при этом является то, что управление версиями позволяет вам рационально разрабатывать сайт. Любая система контроля версий имеет множество преимуществ, которыми грех не воспользоваться. Это возможность восстановления старых версий, отслеживание изменений, управление публикациями и коллективными разработками. Просто так уж случилось, что мой выбор пал именно на CVS.





  
5 '2003
СОДЕРЖАНИЕ

инфраструктура

• Системы питания постоянного тока

• Выбираем 19-дюймовые монтажные шкафы

• Тестируем коммутаторы 10 Gigabit Ethernet

информационные системы

• Повышение производственных показателей call-центров

• Базы данных с открытым исходным кодом

• Управление Web-проектами с помощью CVS

• Российский рынок систем аудиоконференц-связи

• Управление Web-проектами с помощью CVS

сети связи

• Проснись, VoIP зовет

• RPR "впитывает" лучшее

кабельные системы

• Основные вопросы, касающиеся СКС для жилых зданий

• Технология IEEE 1394 и СКС

новые продукты

• Коммутаторы Cisco для сетей Industrial Ethernet


• Калейдоскоп



 Copyright © 1997-2007 ООО "Сети и Системы Связи". Тел. (495) 234-53-21. Факс (495) 974-7110. вверх