Apache Subversion: быстрый старт
подготовлено редакций сайта
Linux
apt-get install subversion
Mac
brew options subversion
Windows
Скачивание с сайта
Установите клиент SVN , чтобы начать совместную работу над проектом, использующим Subversion в качестве системы контроля версий. Чтобы установить клиентскую программу, вы можете собрать ее самостоятельно из исходного кода или загрузить бинарный пакет. Список сайтов, где вы можете получить готовый клиент Subversion, доступен на официальной странице бинарных пакетов . Если вы хотите скомпилировать программное обеспечение самостоятельно, возьмите исходный код на странице Исходный код . Сразу после установки клиента вы сможете протестировать его, выполнив команду svn. Вы должны увидеть следующий вывод:
Теперь вы можете начать использовать клиент командной строки для взаимодействия с удаленным репозиторием.
Репозиторий — это база данных управления версиями, которая часто находится на сервере и обычно предоставляется либо Apache HTTP Server (через модуль mod_dav_svn ), либо сервером svnserve. Репозиторий действует как единый источник истины и — как центральное хранилище — содержит полную историю изменений версионных данных в виде ревизий.
Рабочая копия — это ваше локальное и личное рабочее пространство, которое вы используете
для взаимодействия с центральным репозиторием Subversion. Вы используете рабочую копию
для изменения содержимого вашего проекта и получения изменений, зафиксированных
другими.
Рабочая копия содержит данные вашего проекта и выглядит и действует как обычный каталог
в вашей локальной файловой системе, но с одним важным отличием — рабочая копия
отслеживает статус и изменения файлов и каталогов внутри. Вы можете думать о рабочей
копии как об обычном каталоге с возможностями управления версиями. Рабочая копия имеет
административный каталог с именем .svn в своем корне. Административный каталог содержит
метаданные, необходимые Subversion для управления возможностями управления версиями.
Из одного и того же репозитория или проекта может быть столько рабочих копий, сколько
вам нужно, с любой комбинацией локальных изменений.
Если вы хотите импортировать существующие неверсионные данные в репозиторий SVN, вам следует выполнить команду svn import . Вот пример:
Чтобы начать вносить изменения в данные вашего проекта, вам нужно создать локальную копию версионированного проекта. Вы можете использовать клиент командной строки svn или любой клиент на основе графического интерфейса, который вы предпочитаете. Ваша локальная копия проекта называется рабочей копией, и вы создаете ее, выполнив команду svn checkout . Вот пример:
В результате вы получите рабочую копию ствола проекта с именем MyProject, который находится в репозитории MyRepo. Рабочая копия будет расположена в каталоге MyWorkingCopy на вашем компьютере. Обратите внимание, что вместо того, чтобы выписывать ствол, вы можете выписывать некоторую ветку или тег (предполагая, что они уже существуют в репозитории).
Вы также можете получить рабочую копию всего репозитория MyRepo. Но вам следует воздержаться от этого. Вообще говоря, вам не нужно иметь рабочую копию всего репозитория для вашей работы, потому что ваша рабочая копия может быть мгновенно переключена на другую ветку разработки. Более того, репозиторий Subversion может содержать ряд не связанных между собой проектов, и лучше иметь выделенную рабочую копию для каждого из них, а не одну рабочую копию для всех проектов.
Вы не единственный человек, работающий над проектом, верно? Это значит, что ваши коллеги также вносят изменения в данные проекта. Чтобы оставаться в курсе и получать изменения, внесенные другими, вам следует запустить команду svn update в вашей рабочей копии. В результате ваша рабочая копия синхронизируется с репозиторием и загрузит изменения, внесенные вашими коллегами. Рекомендуется обновить рабочую копию перед внесением локальных изменений в репозиторий.
Большую часть времени вы будете вносить изменения в данные проекта, изменяя содержимое
рабочей копии. Как только вы будете удовлетворены изменениями и тщательно их
рассмотрите, вы будете готовы зафиксировать их в центральном репозитории.
Измените файлы так, как вы это обычно делаете, используя ваш любимый текстовый редактор,
графический редактор, программное обеспечение для редактирования звука, IDE и т. д. Как
только вы сохраните изменения на диск, Subversion автоматически распознает их.
Чтобы опубликовать изменения, внесенные в рабочую копию, необходимо выполнить команду svn commit.
Пример команды фиксации
Обратите внимание на опцию -m (--message) . Всегда следует включать описательное сообщение журнала коммита. Это должно помочь другим, включая вас, понять причину, по которой вы сделали этот коммит. Также хорошей идеей будет включить в сообщение журнала сводку ваших изменений.
Вы можете выполнять любые действия с данными вашего проекта в рабочей копии, но
операции, включающие копирование, перемещение, переименование и удаление, должны
выполняться с использованием соответствующих команд svn .
Subversion не использует эвристическое отслеживание для изменений дерева в рабочей
копии. Subversion требует явного отслеживания изменений дерева. Если вы выполняете
изменения дерева, такие как перемещение или копирование, с помощью обычных команд
файловой системы, Subversion не узнает об этой операции. Для отслеживания изменений
дерева Subversion должна быть осведомлена о них.
Поместите новые файлы или каталоги в рабочую копию, и Subversion увидит их как «неверсированные». Он не начнет автоматически отслеживать новые файлы, пока вы не выполните команду svn add :
Перемещайте и переименовывайте файлы и каталоги с помощью команд svn move или svn rename :
Команда svn rename является псевдонимом для svn move .
Скопируйте файлы и каталоги с помощью команды svn copy :
Удалите файлы и каталоги с помощью команды svn delete svn delete :
Отмените локальные незафиксированные изменения с помощью команды svn revert :
Для создания веток и тегов следует использовать команду svn copy . Это та же команда,
которая используется для копирования элементов в рабочей копии и в репозитории, когда вы
хотите, чтобы они были исторически связаны.
Команда svn copy используется для ветвления, поскольку технически ветвь является копией
источника, из которого вы копируете. Однако это не обычная копия, с которой вы знакомы
при копировании файлов в локальной файловой системе. Ветви в репозиториях Subversion —
это так называемые «дешевые копии» , которые похожи на символические ссылки. Поэтому
создание новой ветки занимает минимальное время и практически не занимает места в
репозитории Subversion. Вы можете создавать ветви и использовать их для любых изменений,
независимо от размера и области действия изменения.
Ветвление в Subversion простое. В простейшей форме создание новой ветки требует от вас выполнения команды для URL-адресов удаленного репозитория. Например, давайте создадим новую ветку из основного ствола:
Вы можете создать репозиторий Subversion на своем компьютере и использовать схему file:// для локального взаимодействия с ним. Такой подход может помочь вам использовать Subversion локально для отслеживания личных файлов и проектов одного человека.
Следующая процедура создает минимальную среду для существующего проекта. Она преобразует каталог с проектом в рабочую копию недавно созданного локального репозитория Subversion. В результате вы можете изменять файлы в рабочей копии и отслеживать изменения в локальном репозитории.
В Unix-системах:
В Windows:
В служебной папке .svn/ для каждого файла рабочей папки Subversion записывает информацию о двух важнейших свойствах:
Основываясь на этой информации, и взаимодействуя с хранилищем, Subversion может сказать, в каком из следующих четырех состояний находится рабочий файл: