LXF70:Subversion1
|
|
|
Subversion. Установка репозитария
ЧАСТЬ 1: Subversion (англ. «ниспровержение», «подрыв») – это отличное решение open-source для управления процессом разработки вашего проекта. Соответственно, в LXF всегда под рукой собственный «подрывник», Грэхем Моррисон, который расскажет вам об этом.
В старые добрые времена программисты имели обыкновение скрываться в своих лабораториях, записывая ленты на машинах размером с орган Кавайе-Колля, что установлен в соборе Сердца Христова в Париже. Результаты их работы, вместе с программами, которые эти результаты генерировали, можно было сохранять только на бумажных лентах, что делало совместную работу несколько затруднительной. Тим Бернерс-Ли (Tim Berners-Lee) разом изменил это. Теперь компьютеры объединены в сети, и в разрабатываемые проекты вовлекаются сотни или даже тысячи людей, активно поддерживающих друг друга. Без такого сетевого сотрудничества у нас не было бы Linux.
Магической основой совместной разработки проекта можно назвать контроль версий. При этом используется программа для отслеживания каждого единичного изменения или исправления в проекте – это сложнее сделать, чем сказать. Как вы поступите, если сразу несколько разработчиков будут редактировать один и тот же участок кода? Или если очередное дополнение тем или иным образом повредит проекту? Первому приложению контроля версий, Revision Control System, или RCS, написанному Вальтером Тичи (Walter Tichy), были присущи многие эти проблемы. Сегодня RCS в большинстве случаев заменено другими программами, среди которых присутствует пакет Subversion, о котором и пойдет речь.
Я буду исследовать Subversion в серии из трех уроков. В этом выпуске вы получите представление об администрировании сервера, от импорта проектов разработки до предоставления удаленного доступа и интеграции с сервером Apache. В следующем месяце мы охватим клиентскую часть Subversion, и третий урок покажет вам более «продвинутые» особенности, такие как ветвления (branching) и теггинг (tagging). Я очень надеюсь, что это улучшит совместную работу, но не в том смысле, что мы обсудим печать ваших собственных копий Манифеста Коммунистической партии для последующего распространения среди друзей и коллег.
Наследие CVS
Сперва – немного истории, которая объяснит, как мы получили Subversion из RCS. Хотя первоначально RCS была очень полезна, в ней имелись довольно большие «дыры». В частности, она не позволяла оперировать с проектом в целом, только с отдельными файлами, и лишь один пользователь мог работать с файлом в данное время. Дик Гран (Dick Grune), расстроенный тем, что не может использовать RCS для совместной работы со студентами над проектом компилятора, занялся разработкой альтернативы, и в 1986-м году свет увидела первая версия программы Concurrent Version System (CVS).
В основу CVS положена весьма простая идея. Дерево исходного кода проекта сохраняется на сервере, называемом «репозитарий». Каждый разработчик должен извлечь собственную копию этого дерева, скачав исходный код на свою локальную машину. Эта копия становится «рабочей». Любые изменения, которые разработчик выполняет в своей рабочей копии, должны быть занесены назад в репозитарий и зафиксированы. Если более чем один разработчик изменял одну и ту же часть кода, возникает конфликт, который CVS не в состоянии разрешить, и код требует ручного редактирования перед тем, как сервер позволит выполнить его фиксацию (commit).
Как вы могли заметить, CVS использует клиент-серверную модель. Сервер обрабатывает содержимое, когда клиент сообщает изменения, которые должны быть сделаны в дереве документов сервера. CVS не всегда используется для исходных текстов приложений: на самом деле, есть несколько странных людей, которые пытаются использовать CVS для управления всей своей жизнью, но это уже совсем другая история.
CVS – это, по сути, многодокументное расширение к RCS, и оно унаследовало некоторые проблемы, связанные с его родителем, и даже добавило немного своих собственных. В этом смысле у Subversion есть все шансы отличиться.
Новое решение
Система Subversion была разработана как непосредственная открытая замена для CVS, выстроенная «с нуля», чтобы решить многие проблемы своей предшественницы. Версия 1.01 была выпущена в марте 2004-го года, а как раз сейчас начинается тестирование версии 1.2.0 Во главе списка ее отличительных особенностей – контроль версий каталогов, который не может обеспечить CVS. Это ключевой момент, поскольку Subversion позволяет вам манипулировать каталогами таким же образом, как и файлами – переносить, переименовывать, копировать и удалять. Основанная на файлах структура CVS – причина ее еще одной большой проблемы. При фиксации изменений существует вероятность потерять соединение на полпути. В случае с CVS, результатом этого станет ситуация, когда половина файлов от разработчика будет обновлена, в то время как другая половина – нет, что не оставит администратору никакой возможности разобраться, какие файлы изменялись, а какие остались старыми. Решение, которое предлагает Subversion, заключается в том, что все изменения в репозитарии выполняются «атомарно». Это означает, что все изменения вносятся как единая транзакция, исключающая «полуобновление» файлов и двойную фиксацию. Это, наряду с другими существенными добавлениями («дешевые» ветвления и тэггинг, отличная поддержка двоичных форматов), сделает обновление до Subversion почти обязательным для пользователей CVS уже в ближайшем будущем.
Subversion доступна для загрузки с сайта http://Subversion.tigris.org под лицензией CollabNet/Tigris.org, которая аналогична лицензии Apache; ее разработчики рекомендуют версию 1.1.4. Как только вы установите эту программу, вам захочется задействовать ее для использования в своем собственном проекте.