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!
 

Комментарии

Страницы

Аватар пользователя vitaut
Как говаривал Линус:

"Subversion has been the most pointless project ever started... Subversion used to say, 'CVS done right.' With that slogan there is nowhere you can go. There is no way to do CVS right."

=)

Аватар пользователя mike
Мой вольный перевод. "Субверсирование от начала было бредом. Его сторонники утверждают: "Оно вам нужно". Вздорный лозунг! Невозможно толково разработать CVS."

Что на это сказать? Линусу холивар не чужд!

Аватар пользователя Инкогнито
Линус - горячий финский парень
Аватар пользователя Инкогнито
mike переводчик блин.. Хоть бы сам знал тему.

"SVN изначально был бессмысленным проектом... Лозунгом SVN было 'Правильный CVS'. С таким слоганом это путь в никуда. Нельзя сделать правильный CVS.

Аватар пользователя mike
>mike переводчик блин. (И т.д.)

Слеп? See: "ВОЛЬНЫЙ перевод".

Аватар пользователя Logic
Хм, так "Невозможно толково разработать CVS." или же "Нельзя сделать правильный CVS"? - Это две БОЛЬШИХ разницы. имхо
Аватар пользователя mike
На ИМХО и суда нимхо.
Аватар пользователя Logic
Ну, кроме SVN и CVS есть и другие...
Аватар пользователя mike
Да, есть. И что?
Аватар пользователя Logic
Так не едиными то!

Страницы