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