SVN для всех

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


Зачем это надо

В эпоху сплошной компьютеризации любой проект - это набор файлов и папок, отражающих ваши (и не только ваши) мысли. При этом неважно, какой это проект - строительный, дизайнерский, программный или диссертация, суть от этого не меняется. Меняются только файлы и папки: мысли, как известно, скачут, появляются новые идеи и, к сожалению, ошибки. Человек, незнакомый с SVN, обычно каждую версию проекта куда-то копирует или архивирует и тут же нумерует. Хозяйство быстро разрастается, после десятка версий нетрудно запутаться, но что самое неприятное - откатывать назад становится неимоверно сложно, так как надо хорошо помнить, какие изменения в файлах влечёт откат одного из них. Зачем же взваливать на себя то, что должна делать SVN, она же Subversion, а по-русски - система управления версиями? О том, что такое SVN, "Вести" уже писали (см. "КВ" №1), подробнее читайте "Википедию"; мы не будем рассматривать "сферического коня в вакууме", а воспользуемся конкретной тягловой силой. И бесплатной к тому же.


Как это работает?

Идея гениально проста. Где-то на вашем компьютере или в сети находится специальная база данных, так называемый репозиторий. Его ещё называют "хранилищем", но это не обычное файлохранилище. В нём находятся не только абсолютно все версии файлов проекта, но и информация, связывающая версии файлов с номером версии проекта, а также комментарии к изменениям. При таком подходе файл, который никогда не изменялся, в репозитории присутствует в единственном виде. Из репозитория в любой момент может быть извлечена любая версия проекта в рабочую папку с тем, чтобы работать именно с этой версией. Случайные повреждения содержимого рабочей папки не страшны, её можно даже полностью очистить и затем восстановить содержимое из репозитория. Рабочая папка - это не обычная папка проекта, она, кроме файлов проекта, содержит ещё и скрытые файлы с расширением .svn, служащие для отслеживания выполняемых изменений. Из рабочей папки изменённые файлы не поступят в репозиторий до тех пор, пока мы не подтвердим пересылку. При необходимости можно создать ещё один репозиторий и экспортировать туда проект, если наметился серьёзный форк, то есть, ответвление от проекта. Например, начали проектировать другой дом или систему электроснабжения для другого предприятия. Также в одном и том же репозитории, как увидим далее, можно хранить разные проекты.

 


Устанавливаем SVN

Проектировщику нужна универсальная SVN, которая жёстко не привязана к какой-либо среде разработки, автоматически интегрируется с проводником ОС Windows и менеджером Total Commander, русскоязычная и бесплатная. Именно такой SVN и является TortoiseSVN, инсталлятор которой можно скачать по адресу tortoisesvn.net/downloads. Выбирайте 32-разрядную версию, работает на всех машинах. Скачайте там же и инсталлятор русификатора. После установки SVN не перезагружайте машину, а сначала установите русификатор, затем перезагружайтесь. Запустите проводник или "Коммандер" и правым кликом по любой папке или файлу убедитесь, что в меню появился пункт TortoiseSVN. Выберите этот пункт и щёлкните "Settings", в выпадающем списке "Language" выберите русский язык и нажмите кнопку "Применить". Остальные настройки пока трогать не надо.


Работаем c SVN

Создание репозитория. Для этого любыми средствами в каком-то разделе диска, скажем, в разделе E:, создаём папку с именем Repository. Имя, разумеется, может быть и другим. В этой папке и будут лежать все файлы, из которых комбинируется очередная версия проекта и его конечный релиз. Теперь нужно этой папке придать свойства SVN-репозитория, т.е. организовать её внутреннюю структуру. Правым кликом по этой папке открываем всплывающее меню и кликаем TortoiseSVN > Создать здесь хранилище. В ответ система должна сообщить "Хранилище создано успешно". Структура хранилища нам безразлична, и оно пока пустое.

Первое заполнение репозитория. Обычно уже есть какой-то изначально наработанный проект, пусть это будет проект в папке C:\CBuilder5\Projects\IBEX. Папка IBEX пока не является рабочей папкой, с точки зрения SVN. Чтобы файлы проекта из папки IBEX попали в репозиторий, он же "хранилище", их нужно туда импортировать. Это просто: делаем правый клик по папке IBEX и выбираем опцию TortoiseSVN > Импорт. Система выдаёт диалоговое окно "Импорт". Первоначально строка "URL в хранилище" будет пустая, так как система пока не имеет никакой информации о существующих хранилищах, поэтому URL придётся ввести вручную: file:///Repository/IBEX/. Обратите внимание на правые слэши, это общее правило для адресов URL. Ещё одна деталь: адрес также заканчивается слэшем, что указывает на то, что в данном репозитории можно будет хранить и другие проекты. Жмём ОК, через несколько секунд импорт закончится и в репозитории будет создана первая версия проекта, она же и последняя (рис. 1). Ради интереса посмотрим и запомним размер папки репозитория.

Рис. 1

Делаем рабочую папку. Превратим папку IBEX в рабочую, с точки зрения SVN, не меняя её адреса, пусть она также остаётся рабочей с точки зрения системы работы над проектом. Заархивируем содержимое этой папки куда-нибудь для безопасности и любым способом полностью вычистим её содержимое. Кликаем правой кнопкой по теперь уже пустой папке IBEX и выбираем опцию TortoiseSVN > Извлечь. Откроется диалоговое окно (рис. 2), в строку "Извлечь в папку" вбиваем адрес рабочей папки, жмём OK.

Рис. 2

По завершению извлечения из репозитория получим то, что изображено на рис. 3.

Рис. 3

Файлы в рабочей папке помечены зелёными птичками (рис. 4). Кстати, если открыть проект в системе разработки, то и там файлы будут помеченными так же.

Рис. 4

Работаем с проектом в среде разработки. Некоторые файлы, естественно, изменятся. Если с помощью проводника посмотреть содержимое рабочей папки после того, как с проектом поработали, то обнаружится, что некоторые файлы помечены красными птичками. Это изменённые файлы. Только они впоследствии и пойдут в репозиторий под новыми кодовыми именами, которые пользователю SVN, в общем-то, безразличны.

Фиксация изменений. Пока изменения не подтверждены, в репозитории номер версии проекта не инкрементируется. SVN не может вынудить зафиксировать изменения, если разработчик этого не желает. Чтобы подтвердить изменения, правым кликом по рабочей папке (в моём примере - папка IBEX) вызываем всплывающее меню опций и выбираем SVN > Фиксировать. Открывается диалоговое окно (рис. 5).

Рис. 5

Можем вписать комментарии, можем посмотреть, что изменили, можем отменить фиксацию. Но после нажатия OK пойдёт прогресс фиксации, который закончится окном, как на рис. 6.

Рис. 6

Теперь в репозитории лежат две версии проекта. Можем извлечь любую. Размер репозитория не удвоился, а увеличился на несколько процентов. Так работает механизм SVN, всегда позволяющий вернуться к другим версиям проекта. Содержимое файлов проекта для SVN не играет никакой роли. Разве это не красиво?


Вместо заключения

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

Михаил ГУРЧИК,
gor-mike@tut.by

Версия для печатиВерсия для печати

Номер: 

46 за 2010 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!
 

Комментарии

Страницы

Аватар пользователя mike
Обзор сам пиши. Напечатают.
Аватар пользователя Logic
mike (old student) > Обзор сам пиши. Напечатают.

э-э-э, нет. Заголовок типа - "Как я разочаровался в SVN и перешёл на..." звучал мы лучше. имхо

Аватар пользователя mike
Как ты разочаровался в SVN? Срочно пиши! Напечатают точно!
Аватар пользователя Logic
>Как ты разочаровался в SVN?

SVN - это уже прошлое...

Аватар пользователя mike
Тогда пиши про настоящее. И будущее помяни.
Аватар пользователя Logic
mike (old student) >И будущее помяни.

Не принято поминать то, что не наступило. имхо

Аватар пользователя Al
Майк, если по сути статьи замечаний и вопросов нет - значит статья удалась! Остальное - шум. )))
Аватар пользователя mike
>Не принято поминать то, что не наступило

Дык 2012, АЭС и пр.

>..Статья удалась!

Не совсем. Могла быть и длинше. :)

Аватар пользователя Logic
mike (old student) > Дык 2012, АЭС и пр.

Дык о 2012 ПОМНИТЬ трэба.

А чтобы поминуть окончательно АЭС, так ещё много придеться о ней гутарыць.

имхо

Аватар пользователя Al
"Не совсем. Могла быть и длинше. :)" А чего ж не удлинить?

Страницы