Subversion как персональная система контроля версий

Давно хотел начать использовать какую-нибудь систему контроля версий для "домашних" проектов, но никак не мог заставить себя это сделать. Мне казалось, что настройка собственного "сервера" для подобной системы – долгое и муторное занятие. Но желание использовать систему контроля версий не пропадало из-за очевидных преимуществ её применения в процессе разработки.

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

В ходе изучения этого вопроса выяснилось, что для работы локально прекрасно подходит Subversion (SVN), при этом создание репозитория в локальной файловой системе с помощью SVN не требует каких-либо усилий. В качестве клиента был выбран TortoiseSVN, который является бесплатным, неплохо интегрируется в Windows Explorer, поддерживает большое количество функций, и к тому же я уже имел некоторый опыт работы с ним.

Скачать последнюю версию клиента TortoiseSVN можно здесь. На момент написания статьи была доступна версия 1.5.5.

После установки TortoiseSVN перегрузите компьютер - теперь вы готовы к настройке собственной системы контроля версий.

Рассмотрим простой сценарий - у нас имеется проект MyProject, находящийся в папке C:\Projects\MyProject, и мы хотим поместить его в репозиторий SVN, чтобы в дальнейшем управлять версиями этого проекта. Нам потребуется создать репозиторий SVN, импортировать туда проект и выполнить checkout этого проекта.

Создание репозитория SVN

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

Для этого на одном из локальных дисков создайте папку, в которой в дальнейшем будет находится репозиторий SVN для проекта. Лучше, чтобы эта папка находилась на достаточно надежном носителе. Пусть это будет папка F:\MyRepository\MyProject.

В Windows Explorer нажмите правой кнопкой мыши на созданной папке и выберите команду TortoiseSVN\Create repository here. Появится окошко с сообщением, что репозиторий успешно создан.

Чтобы открыть репозиторий, выберите команду TortoiseSVN\Repo-browser в контекстном меню соответствующей папки. Появится окно репозитория:

Окно репозитория

Импорт проекта

Далее нужно импортировать проект в репозиторий. Для этого в Windows Explorer в контекстном меню папки C:\Projects\MyProject выберите команду TortoiseSVN\Import....

В появившемся диалоговом окне укажите URL к репозиторию: file:///F:/MyRepository/MyProject и нажмите кнопку OK.

Импорт

Начнется процесс импорта проекта в репозиторий. В окне статуса вы увидите список импортированных файлов:

Процесс импорта

После импорта файлы проекта появятся в репозитории SVN:

Проект в репозитории

Checkout проекта

Далее необходимо выполнить Checkout для проекта, указав таким образом, где на диске будет находиться его рабочая версия. Т.к. проект уже лежит в папке C:\Projects\MyProject, то выберите в контекстном меню этой папки команду SVN Checkout.... В появившемся диалоговом окне укажите URL к репозиторию file:///F:/MyRepository/MyProject, а также путь к папке с рабочей версией проекта C:\Projects\MyProject.

Checkout проекта

После нажатия на кнопку ОК появится сообщение:

Сообщение

Нажмите Yes. Произойдёт обновление файлов проекта и привязка их к конкретной ревизии SVN:

Синхронизация проекта

После этого в папке проекта появятся специальные скрытые каталоги с названием .svn, в которых SVN хранит необходимую информацию о файлах проекта и их связи с репозиторием.

Всё, можно сказать, что система контроля версий для данного проекта настроена. Теперь любые изменения в проекте можно закладывать в SVN с помощью команды SVN Commit... из контекстного меню папки проекта (или любой вложенной). Эти изменения будут исторически сохраняться в репозитории, и вы сможете в любой момент посмотреть историю изменений, откатить проект до нужной версии и т.п.

Напоследок я хотел бы отметить некоторые особенности работы с данной системой контроля версий и клиентом TortoiseSVN.

В отличие от клиентов, интегрируемых в среды разработки, TortoiseSVN интегрируется только в Windows Explorer, поэтому он не знает семантики проектов и файлов. К примеру, TortoiseSVN не знает, какие файлы не следует закладывать в репозиторий. К таким файлам обычно относятся различные временные файлы, файлы, которые создаются при каждой компиляции, к примеру сборки, которые складываются в папку bin\debug, файлы опций проектов или настроек пользователя и т.д. Лично я рекомендую помещать эти файлы в т.н. ignore list репозитория. Это можно сделать из контекстного меню конкретного файла или папки. Правда предварительно такие файлы необходимо удалить из репозитория, дождаться, когда после очередного изменения проекта они снова появятся в списке файлов на закладывание, и выбрать в контекстном меню соответствующих файлов команду TortoiseSVN\Add to ignore list.

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

Комментарии

Комментарии закрыты

Powered by BlogEngine.NET 1.4.5.10