Статьи

Используйте всю мощь CVS для вашего сайта

Теперь, где я положил этот файл?

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

Если вы слишком стеснялись спросить, CVS означает «Система параллельных версий» (не путать с CSV — форматом значения с разделением запятыми для файлов данных) и является инструментом для управления версией / ревизией любого типа файла. Основная идея CVS заключается в том, что существует центральное место (или хранилище), где хранятся все ревизии файла, а также комментарии о том, что они из себя представляют и что менялось с каждой новой версией. Затем к хранилищу можно получить доступ более или менее из любого места, где бы вы ни находились — будь то ваш компьютер дома, компьютер или другой разработчик, работающий в другой части мира. Таким образом, CVS гарантирует, что все участники проекта всегда работают с последней версией файла.

Почему это должно вас интересовать? Если вы недавно начали создавать свои собственные веб-страницы или свои первые сценарии PHP, просто для удовольствия, идея контроля версий / версий может показаться излишней. Но если вы делаете что-то большее, чем балуетесь созданием сайта, в конечном итоге с вами произойдет одна или несколько из следующих вещей:

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

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

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

Вы начинаете сотрудничать с некоторыми другими разработчиками сайта и сразу же останавливаете работу, поскольку вы тратите 95% своего времени, просто следя за изменениями, которые делают другие люди.

Эксперимент с командой rm -r * Копия на вашем ПК устарела, и ваш веб-хостинг говорит: «Конечно, мы восстановим ваш сайт из резервной копии. Завтра».

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

Итак, вот сегодняшняя оплата:

  • Абсолютные новички: основные концепции CVS
  • Обнимая дерево: приступим к делу, проверив наш первый репозиторий CVS
  • Участники SitePoint поразили Sourceforge: HarryF и Glenplake сходят с ума из-за CVS в сообществе Open Source
  • В заключение: несколько заключительных слов и указателей на полезную документацию, например, настройку собственного сервера CVS в Windows (это могут делать не только * Nix-типы)
Абсолютные начинающие

Если вы работали в любой распределенной вычислительной среде (и, как вы читаете эту веб-страницу, у вас есть), вы, вероятно, столкнулись с управлением версиями в той или иной форме. Возможно, вы пытались обновить документ Word с центрального сервера NT на работе, но вам сказали, что он доступен только для чтения, потому что над ним кто-то работает. Или, возможно, вам приходилось сталкиваться с «блокировкой записей» в базе данных, и у вас были неудачные ситуации, когда два администратора вашего сайта обновили одну и ту же статью одновременно. Так или иначе, вы, вероятно, сталкивались с управлением версиями / ревизиями в той или иной форме и хотели бы найти лучший способ справиться с этим. Ну, теперь вы можете: с CVS.

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

Но прежде чем мы пойдем дальше, пришло время ввести некоторую терминологию, которую нам нужно использовать, если это объяснение имеет смысл. Вы увидите, что эти термины используются во всем Интернете, где бы ни рассматривался CVS.

Запись: я буду использовать это здесь для ссылки на любой «объект», с которым вы работаете, будь то изображение .gif, файл Shockwave, скрипт PHP, документ Word … или что угодно.

Редакция: изменение записи (или группы или записей), пока «работа в процессе». Например, вы создаете скрипт PHP. Позже вы вернетесь и внесете в него некоторые изменения, создав тем самым следующую версию скрипта.

Репозиторий: это «материнский корабль» проекта, над которым вы работаете. Вся ваша работа хранится здесь и полностью отслеживается с историей изменений , что позволяет вам проверить последние записи в любой момент. Скажем, вы получили нового клиента, «Buildmysite Inc.» кто хочет, чтобы вы создали свой сайт. Вы бы создали хранилище под названием «buildmysite», где будут храниться все HTML-страницы, изображения, PHP-скрипты, документация, запросы для создания их базы данных MySQL.

Рабочая копия: относится к любой записи, над которой вы (или другой разработчик) работаете. Рабочая копия была извлечена из хранилища и находится на вашем жестком диске, пока вы редактируете ее с помощью Photoshop, Ultradev и т. Д.

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

Фиксация (иначе: регистрация): вы работали над записью и уже сделали достаточно (да! Время для перерыва на кофе!), Вы фиксируете запись обратно в репозиторий, чтобы сохранить последнюю ревизию там. Другой разработчик, который позже проверяет запись, получает последнюю версию для работы.

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

Обновление: обновляет вашу рабочую копию со всеми последними изменениями из хранилища . Например, вы начинаете свой день с проверки вновь созданной записи на вашем компьютере и работаете над HTML-шаблоном до двенадцати часов дня. Затем ваш хороший друг Боб звонит, чтобы сказать, что он внес некоторые изменения в файл CSS и отправил их в репозиторий , и он думает, что Джанет также могла изменить некоторые изображения. Таким образом, вы быстро выполняете обновление, чтобы привести свою рабочую копию в соответствие с работой всех остальных. Как только вы увидите, как выглядит ваш HTML-шаблон со всей новой работой, вы регистрируете его в репозитории .

Конфликт: допустим, что Боб и Джанет проверяют один и тот же PHP-скрипт, не зная, что другой одновременно работает с одним и тем же файлом. После внесения некоторых изменений Джанет передает свою работу в хранилище ; нет проблем. Затем Боб пытается зафиксировать свои изменения, но собирается перезаписать работу, которую сделала Джанет. CVS обнаруживает проблему и предупреждает Боба о конфликтах . Затем Бобу и Джанет предстоит найти лучший способ объединить их работу. Это может показаться странным способом справиться с этой ситуацией, но это одна из вещей, которая делает CVS мощным. В больших проектах со многими разработчиками или проектах, где разработчики должны сотрудничать через Интернет, такой подход обеспечивает большую гибкость.

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

Дерево: Относится ко всему, что хранится в CVS. На данном сервере CVS может быть несколько репозиториев . Вся структура называется деревом (как любая структура каталогов на жестком диске).

Возможно, вы уже поняли, что CVS работает на основе «клиент-сервер». Например, у вас есть сервер, на котором хранится ваш CVS-репозиторий (обычно это машина с большим количеством дискового пространства и быстрым сетевым подключением, которая может работать под управлением Unix, например, Linux или версии Windows NT). Вы получаете доступ к серверу по сети с помощью клиента, который вы запускаете на своей рабочей станции (есть поддержка клиентов для более или менее каждой операционной системы: Unix, Windows и Macintosh). Это делает CVS чрезвычайно мощным — если ваш сервер CVS подключен к Интернету, вы можете проверить последнюю версию вашего проекта в любой точке мира!

ОК — это основные термины и понятия, которые вам понадобятся в CVS. Не паникуйте! Вам нужно знать, что это такое, но мы покажем вам CVS в действии, что должно прояснить ситуацию.

Обнимая дерево

Правильно. Достаточно разговоров: пришло время бросить вас прямо в глубокий конец! Мы собираемся установить клиент CVS и проверить репозиторий на нашем жестком диске. Для этого примера вам нужно использовать любую версию Windows.

Большая Установка

CVS звучит довольно серьезно, верно? Итак, вы представляете, что будет очень сложно установить клиент? Ну, готовься …

  1. Перейдите на страницу загрузки cvshome для Windows и нажмите на ссылку Win32 (ниже слова «Платформа»). Сохраните ZIP где-нибудь на жестком диске.
  • — Теперь распакуйте файл (cvs.exe) в каталог Windows «system32» (обычно это C: / Windows / system32).
  • Вот и все: установка окончена! Ну, почти. Мы установили клиент CVS командной строки DOS, который дает вам простой интерфейс к CVS, который вы можете сразу использовать.

    Но давайте не будем останавливаться на достигнутом — воспользуйтесь моментом и проверьте свой первый CVS-репозиторий! Мы собираемся проверить исходный код PHP для phpBB2 . Как вы можете видеть здесь, phpBB — это проект с открытым исходным кодом, размещенный на Sourceforge . А поскольку это Sourceforge, каждый имеет анонимный (только для чтения) доступ к дереву CVS проектов. Подробности о дереве phpBB можно найти здесь , и если вы нажмете «Обзор репозитория CVS», вы увидите, что на самом деле есть два репозитория: phpBB для старой версии 1 кода и phpBB2 для последней версии. Итак, давайте (в буквальном смысле) проверить это …

    Откройте приглашение MS DOS (обычно где-то в меню «Пуск», возможно, в разделе «Аксессуары») и введите следующее. Обратите внимание, что вам нужно будет подключиться к Интернету, чтобы это работало:

     cd   
    mkdir cvs_root  
    cd cvs_root  
    cvs -d:pserver:[email protected]:/cvsroot/phpbb login    
    cvs -z3 -d:pserver:[email protected]:/cvsroot/phpbb  
    co phpBB2

    Вот что мы только что сделали, строка за строкой:

    1. hange [d] директория "корня" вашего диска c:

    2. [m] a [k] ea [dir] ectory с именем cvs_root
    3. Перейдите в каталог cvs_root
    4. Войдите в phpBB cvs rver - просто нажмите return, когда он попросит вас ввести пароль
    5. Посмотрите (со) код phpBB2 - это СЛУЧАЙНО ПОЖАЛУЙСТА, так что будьте осторожны!

    Появится список файлов - они копируются на ваш жесткий диск. Каждая запись в списке выглядит примерно так:

     U phpBB2/common.php

    U означает «Обновление», и это говорит о том, что он извлекает файл из репозитория phpBB2, и, как бы быстрый просмотр вашего жесткого диска, не обнаружил существующей версии common.php, он создает ее в c: cvs_rootphpBB2

    Теперь, если вы загляните в c: cvs_root (вы можете предпочесть сделать эту часть в проводнике Windows), вы найдете подкаталог phpBB2, который содержит весь последний код phpBB2. Поздравляем! Вы только что проверили свой первый CVS-репозиторий!

    Теперь для следующего трюка. Используя предпочитаемый текстовый редактор, откройте файл c: cvs_rootphpBB2common.php и в верхней части файла введите «Это тест», затем сохраните файл с тем же именем и закройте его. Кроме того, просто для удовольствия, удалите файл c: cvs_rootphpBB2install.php

    Затем, вернувшись к приглашению MS DOS, введите его из каталога c: cvs_root (введите cd, если вы не уверены, где находитесь):

     cvs -z3 -d:pserver:[email protected]:/   
    cvsroot/phpbb update phpBB2

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

     M phpBB2/common.php

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

     U phpBB2/install.php

    CVS не удалось найти install.php, поэтому он сообщает, что создает его.

    Тогда все остальное выглядит так:

     cvs server: Updating phpBB/admin

    Это говорит о том, что файл, найденный на вашем жестком диске, совпадает с ревизией в хранилище CVS.

    Не заходите снова в ваш текстовый редактор и открывайте c: cvs_rootphpBB2common.php - ваше маленькое сообщение все еще находится вверху файла? Да, это так!

    Затем в Windows Explorer (или иным образом) и посмотрите в каталог c: cvs_rootphpBB2 - вы можете увидеть install.php? Да, ты можешь. Он вернулся, даже если вы удалили его.

    Это оно! Вы только что выполнили свое первое обновление! Теперь вы видели это в действии, помните «направление», в котором работают обновления. «Обновление» предназначено для обновления собственной рабочей копии проекта на вашем компьютере из репозитория CVS. Чтобы «обновить» сам репозиторий работой, которую вы проделали на своем компьютере, вы выполняете коммит , который мы рассмотрим позже.

    Начинаете чувствовать тепло еще?

    Даже имея анонимный доступ только для чтения, мы имеем в своем распоряжении очень мощный инструмент. Взять, к примеру, проект phpBB. Для стандартной установки вы бы только обновили файл phpBB2 / config.php с локальными настройками для вашего сервера MySQL и т. Д. Но, благодаря CVS, вы можете идти в ногу с последним кодом phpBB2, используя обновление, которое мы сделали выше, в то время как сохраняя ваши локальные настройки в config.php в такте. Вы можете установить phpBB2 на свой сайт и обновлять его на регулярной основе, без необходимости опускать веки.

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

    Клиент CVS, который мы установили, был версией командной строки для DOS. Но если вы не в командной строке, не отчаивайтесь! Существует версия графического интерфейса под названием WinCVS (или иногда cvsgui), которую вы можете скачать здесь для Windows, Macintosh и GTK (GTK для тех Linux-извергов - хотя, конечно, они, вероятно, уже знают все о CVS). Установка клиента WinCVS может быть немного сложнее, поэтому я оставлю описание установки и использования в документации .

    CVS имеет несколько механизмов аутентификации. В приведенном выше примере мы использовали метод pserver (Server Authentication Server). Это хорошо для анонимного доступа, но, как и ftp, он отправляет ваше имя пользователя и пароль в виде открытого текста через Интернет - любой, кто прослушивает, может прослушать их. В целях безопасности вы обычно используете ssh (безопасную оболочку) для доступа к хранилищу CVS через Интернет для чего-то более серьезного, чем доступ только для чтения. Пользователи Windows и Mac должны взглянуть на WinCVS-SSH-Guide, чтобы узнать больше об этом.

    Участники SitePoint Хит Sourceforge

    Эта история на 100% правдива, и имена не были изменены, чтобы защитить виновных!

    Когда-то давно PHP-кодер, известный в некоторых кругах как HarryF, решил написать PHP-приложение (имя которого будет доступно в далеком будущем, когда оно наконец будет готово!). В то время как он неистово кодировал свое творение, другой кодер и Мастер Photoshop, известный некоторым как Glenplake, любезно предложил ГарриF разработать пользовательский интерфейс для своего приложения.

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

    К счастью, в Священных горах с открытым исходным кодом стоял Храм Sourceforge , из которого происходят все хорошие вещи. После «Ритуала регистрации нового проекта» наши два стойких программиста PHP смогли получить доступ к Фонтану CVS и тем самым, наконец, успешно сотрудничать. Все вернулось на круги своя, проект продвинулся вперед, и кодеры сохранили то, что осталось от их волос.

    Sourceforge требует от нас, разработчиков, доступа к нему с помощью метода ssh. Если вы используете Windows, стоит установить некоторые переменные среды, чтобы упростить жизнь, поэтому прежде чем мы пойдем дальше:

    1. Загрузите ssh с http://download.sourceforge.net/sfsetup/ . Файл будет назван примерно так: ssh-1.2.14-win32bin.zip
  • Распакуйте в каталог: C: программа filesssh
  • Теперь откройте приглашение MS DOS и введите следующую команду, чтобы создать каталог c: program filesssh.ssh (проводник Windows не позволяет создавать каталоги, начинающиеся с полной остановки (или точки)):
  • cd progra~1ssh  
    mkdir .ssh

  • Обновите переменные среды вашей системы:
    • Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства»
    • Нажмите вкладку «Дополнительно»
    • Нажмите «Переменные среды»
  • Обновите переменную path (используется для запуска программ из любой точки вашей системы) с помощью установочного каталога ssh
    • Выберите переменную «путь» (под системными переменными) с помощью мыши и нажмите «Изменить»
    • В конце поля, которое вы сейчас редактируете, добавьте «c: progra ~ 1ssh» с точкой с запятой перед ним, т.е. «; c: progra ~ 1ssh»
  • Сделайте вашу переменную HOME, которая требуется CVS для поиска приложения ssh
    • Нажмите «Новая системная переменная»
    • Назовите новую переменную "HOME"
    • Установите значение переменной: «C: progra ~ 1ssh»
    • Нажмите "ОК"
  • Сделайте переменную CVS_RSH, чтобы сообщить CVS, какой метод аутентификации будет использоваться
    • Нажмите «Новая системная переменная»
    • Назовите новую переменную "CVS_RSH"
    • Установите значение переменной: SSH
    • Нажмите "ОК"
  • Создайте переменную CVSROOT, которая сообщает клиенту CVS, какое дерево CVS использовать.
    • Нажмите «Новая системная переменная»
    • Назовите новую переменную "CVSROOT"
    • Установите значение переменной: ": ext: [email protected]: / cvsroot / yourproject"
    • Нажмите "ОК"
  • Нажимайте «ОК», пока не закроются все окна свойств «Мой компьютер».
  • Предполагая, что вы уже установили cvs.exe, вы можете получить доступ к дереву Sourceforge CVS.

    В те времена, когда HarryF и Glenplake взяли на себя трудную задачу международного сотрудничества, HarryF настроил свои переменные окружения именно так. И как только это было сделано, он взял всю работу, которую выполнил до сих пор, и импортировал ее в CVS следующим образом:

     cd MyWorkthe_project    
    cvs import the_project vendor start

    Вот что он сделал, строка за строкой:

    1. Он перешел в каталог, где находился проект, который он хотел добавить в CVS.
    2. Он импортировал всю работу из этого каталога - и все, что находится под ним - в репозиторий CVS "the_project". На этом этапе он должен был безоговорочно использовать «начало поставщика» (подробнее об этом здесь ).

    После того, как он был импортирован в репозиторий, HarryF переименовал каталог «c: MyWorkthe_project» в «c: MyWorkthe_project_old», чтобы он не был потерян при извлечении его первой копии нового репозитория:

     cd MyWork   
    cvs co the_project

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

    Затем HarryF обнаружил один из самых темных секретов CVS: CVS не очень хорошо обрабатывает двоичные файлы, включая исполняемые файлы (.exe), изображения (.gif, .png, .jpg), файлы Shockwave (.swf) и т. Д. CVS предполагает по умолчанию все файлы являются текстовыми файлами и пытаются поместить в них такие вещи, как код ревизии, что может иметь катастрофические последствия для двоичных файлов. Все изображения .gif, сделанные HarryF и импортированные в репозиторий CVS, теперь зашифрованы и бесполезны. Что он мог сделать?

    В общем, прежде чем импортировать свой проект в первый раз, рекомендуется настроить файл cvswrappers, чтобы сообщить CVS, какие типы файлов являются двоичными. Кроме того, когда вы добавляете новые двоичные файлы в существующий проект, вы также можете использовать «cvs add -kb myfile.gif», чтобы сообщить CVS, что файл является двоичным.

    HarryF обнаружил это благодаря лихорадочной консультации с руководством по cvs admin и способам восстановления после этой катастрофы. Он реализовал это и - эй-престо! - его двоичные файлы были восстановлены в былой славе.

    Наконец, довольный хранилищем CVS, HarryF написал Glenplake по электронной почте, чтобы сказать ему, что все хорошо, и что пришло время объединить работу, которую он проделал, с основным кодом. Затем HarryF решил, что ему нужен перерыв, и вышел, чтобы начать еще один спор с механиком, который должен был починить свой мотоцикл.

    В то же время, Гленплейк, будучи одним из тех опытных типов Linux (а также профессионалом Photoshop - его таланты были несравнимы!), Вошел на свой веб-сервер Linux и быстро настроил среду для использования с их новым деревом CVS.

    В большинстве распространенных дистрибутивов Linux уже установлены ssh и клиент cvs (конечно, это сделал Glenplake), поэтому вы можете настроить среду, как мы это делали в Windows, используя следующие команды:

     export CVS_RSH=ssh     
    export [email protected]:/    
    cvsroot/the_project

    Гленплейк, будучи еще более умным, отредактировал файл .bash_profile в своем домашнем каталоге Linux и добавил:

     CVS_RSH=ssh     
    [email protected]:/cvsroot/the_project    
    export CVS_RSH    
    export CVSROOT

    Это означало, что каждый раз, когда он входил в систему, он правильно устанавливал переменные среды и не нуждался в их повторном вводе.

    Теперь перейдем в корневой веб-каталог на своем сервере с помощью:

     cd /home/glenplake/www

    ... он переименовал версию кода, которую он там установил:

     mv the_project the_project_old

    Затем он взял последнюю версию из хранилища:

     cvs -z3 co the_project

    Успех! Теперь у Гленплэйка была рабочая копия хранилища.

    Он быстро скопировал проделанную им работу из старого каталога в новую рабочую копию:

     cp the_project_old/updated_file.php the_project/    
       
    cp the_project_old/new_image.gif the_project/

    Вот что сделали эти команды:

    1. Скопировал один из файлов HarryF, которые Glenplake обновил, в рабочий каталог
    2. Копирует новое изображение, созданное Glenplake, в рабочий каталог

    Затем он перешел в рабочий каталог:

     cd /home/glenplake/www/the_project

    ... и представил свою работу в хранилище CVS. Для файла, который он обновил, он использовал:

     cvs commit -m "Fixed some bugs" updated_file.php

    … Чтобы зафиксировать файл в хранилище. Он использовал -m «Исправлены некоторые ошибки», чтобы добавить сообщение журнала в историю изменений updated_file.php, чтобы позже оба разработчика смогли увидеть, что случилось с файлом.

    Затем для нового файла, который он создал, Гленплейк набрал:

     cvs add -kb new_image.gif    
    cvs commit -m "The project logo" new_image.gif

    … Чтобы добавить новое изображение в хранилище. «cvs add» указывает CVS запланировать добавление этого файла в репозиторий при следующем выполнении фиксации. «-Kb» сообщает CVS, что файл является двоичным и должен обрабатываться с осторожностью. "cvs commit -m" Логотип проекта "new_image.gif" фактически фиксирует новое изображение в хранилище с сообщением журнала "Логотип проекта".

    В Windows Glenplake мог также успешно выполнять те же команды cvs, используя клиент «cvs.exe».

    Теперь, когда он закончил, Гленплейк вышел, чтобы украсть несколько рогаликов из своей местной пекарни.

    Тем временем в далекой стране ГарриФ вернулся домой и вернулся к работе над проектом.

    Поскольку он обращал внимание на документацию, он знал, что было бы неплохо начать с «обновления cvs», чтобы убедиться, что у него последняя версия репозитория. Поэтому он напечатал:

     cvs update

    ... и CVS ответил:

     U the_project/updated_file.php    
    U the_project/new_image.gif

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

    И так Гленплейк и HarryF продолжили, превзойдя все свои личные ожидания и завершая проект довольно большой величины.

    Завершение

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

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

    Получать помощь

    Возможно, лучшее место для начала - книга CVS, которая - хотя и долгая - требует времени для четкого объяснения концепций. Если вы просто взгляните на страницу содержимого, вы получите представление о некоторых более сложных вещах, которые вы можете сделать с помощью CVS. В качестве альтернативы вы можете попробовать CVS Version Control для проектов веб-сайтов, которая охватывает меньше вопросов, но больше ориентирована на веб-разработчиков, таких как мы. «Официальную» документацию можно найти на сайте http://www.cvshome.org или здесь . И, конечно же, если вам не нравится ни один из этих ресурсов, быстрый поиск в Google найдет много альтернативных объяснений, учебных пособий и руководств. Вы определенно не одиноки с CVS.

    Сервер CVS для Windows

    Как мы упоминали в начале этой статьи, CVS не только для типов * Nix. Он широко используется и, как вы уже начали видеть, хорошо поддерживается. Он также популярен во многих компаниях, где он обычно используется при разработке программного обеспечения. Без сомнения, любые навыки, которые вы можете развить с помощью CVS, являются хорошими новостями для вашего резюме.

    Итак, пользователи Windows, зайдите на http://www.cvsnt.org/ и получите себе копию. Вы найдете альтернативные пошаговые руководства по установке здесь и здесь . Сервер CVSNT подтвержден как работающий на Windows NT4 Server / Workstation с пакетом обновления 6, Windows 2000 Server / Professional и Windows XP-Pro. Существует также урезанная версия, которая может работать на Windows 95/98, так что в целом вы должны иметь возможность где-нибудь запустить сервер.

    Просмотр CVS онлайн

    Наконец, есть также веб-средства просмотра CVS, которые позволяют вам просматривать ваше дерево CVS в Интернете - очень удобно для того, чтобы узнать, что содержит дерево, и какие изменения были внесены. Три примера: Chora , написанный на PHP, ViewCVS , написанный на Python и cvsweb , написанный на Perl.

    Итак, смело отправляйтесь в дивный новый мир CVS, и пусть все ваши исправления станут релизами!

    Автор хотел бы поблагодарить Дэн , который был подвергнут многочисленным странным экспериментам при написании этой статьи.