разработка и программирование электронных устройств

Начинаем использовать SVN в своих проектах

Для любого программиста знакома ситуация, когда после внесения некоторых изменений в исходный код программы последняя перестает правильно работать. Выходом из такой ситуации может служить сохранение нескольких копий программы на разных этапах разработки. Такое решение нередко приводит к путанице в версиях, особенно после длительной паузы в работе над проектом.

Решение проблемы предоставляют системы контроля версий , которые автоматизируют процесс управления версиями программы.

Кроме управления версиями, эти системы предоставляют одновременный доступ для работы над проектом нескольким программистам и синхронизацию внесенных ими изменений в проект. Исходный код в этом случае хранится в специальном хранилище на удаленном сервере, доступ к которому имеют только программисты, работающие над проектом.

Subversion или сокращенно SVN является одной из наиболее современных систем управления версиями.

Идея использовать SVN в своих проектах возникла у меня в связи с желанием хранить все существующие и будущие примеры и проекты сайта «Схемотехника» в одном месте, а также иметь возможность получить доступ к исходному коду, хранящемуся в удаленном SVN хранилище, из обеих операционных систем ( Linux и Windows).

В качестве бесплатного хостинга для своего SVN хранилища я выбрал Google Code. Ссылка на созданный мною проект доступна из главного меню сайта под названием «SVN хранилище». В конце статьи также размещены ссылки на другие интересные проекты для микроконтроллеров, распространяемые под свободной лицензией.

Теперь о главном, как же воспользоваться этим-самым хранилищем? Очень просто! Для этого необходимо установить клиентское программное обеспечение на своем домашнем компьютере, которое существует для различных операционных систем.

Для пользователей Windows одной из популярных программ для работы с SVN является TortoiseSVN, которую можно также загрузить с хранилища на закладке Downloads.

После установки программы в контекстном меню, вызываемом при нажатии правой клавиши мыши на любой папке, появятся дополнительные пункты для работы с SVN.

Счастливым обладателям Fedora Electronic Lab не придется совершенно ничего устанавливать, поскольку все необходимое уже установлено в системе «с коробки».

На бесплатных сервисах, таких как Google Code и Sourceforge, кроме SVN, поддерживаются и другие системы управления версиями( CVS, git, Mercurial ).

Для того, чтобы скопировать удаленную файловую структуру на свой жесткий диск достаточно выполнить единственную команду, указанную на сайте проекта( Source – Checkout для Google Code и Develop в Sourceforge ).

Сначала нужно проверить наличие всех необходимых утилит в системе :

$ svn --version
$ cvs --version
$ git --version

Git – довольно древняя система управления версиями , написанная Линусом Торвальдсом и используемая им при разработке ядра Linux. В новые дистрибутивы Fedora Linux git не включен, поэтому выполним его установку в Fedora Electronic Lab с помощью команды :

$ su 
password	
# yum install git

Вы можете создать собственный проект с открытым исходным кодом и выложить его на одном из бесплатных сервисов, предварительно выбрав тип лицензии, под которой будет распространяться проект.

Если же не планируется выкладывать исходники или поведать всему миру о своем проекте, то можно создать локальное SVN хранилище на жестком диске, которое поможет вам контролировать версии своих исходных файлов.

Для создания локального SVN хранилища необходимо выполнить команду :

$ su
password	
# cd
# svnadmin create /root/svn

Внутри директории svn автоматически будет создана необходимая файловая структура.

# cd /root/svn
# ls

Теперь нужно зарегистрировать пользователей , имеющих доступ к созданному хранилищу. Для этого перейдем в каталог /root/svn/conf и откроем файл passwd

# cd conf
# vi passwd

Входим в режим редактирования ( клавиша Insert ) и добавляем в группу users нового пользователя и пароль.

[ users ]
# harry = harryssecret
# sally = sallysecret
admin = 123

Сохраняем внесенные изменения и выходим ( ESC : x ).

Следующим шагом для нас будет внесение в SVN хранилище нашего проекта. Пускай проект находится в /root/src . Необходимо перейти в директорию проекта и выполнить команду импорта исходников в хранилище

# cd /root/src
# svn import -m “внесение проекта под контроль версий”  file:///root/svn  -–username admin

После выполнения последней команды в хранилище будут добавлены каталоги и файлы из директории src.

# cd /root/svn/db
# ls

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

# svn checkout file:///root/svn /root/project 
# cd /root/project
# ls -a

Выполнив команду ls -a вы увидите в своем рабочем каталоге дополнительную директорию .svn . Эту директорию не нужно трогать, иначе рискуете нарушить работу системы контроля версий.

Далее вся работа проводится над созданной и синхронизированной с хранилищем файловой структурой.

Попробуем добавить новый файл main.c в репозиторий . Для этого сначала создадим его в нашем рабочем проекте.

# vi main.c

Текст файла — любой, например такой :

/*main.c */
int main( void )
{
	while( 1 ) ;
	return 0;
}/*main*/

Теперь необходимо добавить новый файл main.c под контроль версий и синхронизировать наш проект с хранилищем

# svn add /root/project/main.c 
# svn update

Добавим в комментарий файла main.c ключевые слова для отображения номера ревизии, автора и даты изменения.

/*	main.c 
*	$Rev$ 		Ревизия файла
*	$Author	$ 	Автор изменения		
*	$Date$		 Дата изменения
*/
 
int main( void )
{
	while( 1 ) ;
	return 0;
}/*main*/

Запись в хранилище внесенных в локальную копию изменений выполняется с помощью команды

# svn commit -m "добавлен номер ревизии, автор и дата"

Необходимые для автоматического отображения изменений ключевые слова заданы, но система контроля версий ничего не станет подставлять на место ключевых слов без нашего на то указания.

Заставить SVN заняться подстановкой значений вместо ключевых слов можно с помощью следующей команды

# svn propset svn:keywords “Rev Author Date” main.c

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

/*	main.c 
*	$Rev: 17$ 		Ревизия файла
*	$Author	: admin$ 	Автор изменения		
*	$Date: 2011-01-31 21:50:22 + 0200 ( Пнд, 31 Янв 2011 )$		 Дата изменения
*/

Теперь, как и обещал, привожу ссылки на свободные проекты, размещенные на бесплатных хостингах












Список ссылок :
1 Управление версиями в Subversion - перевод на русский язык исчерпывающей документации по SVN
2 Встраиваемая операционная система uOS - операционная система для микроконтроллеров Сергея Вакуленка
3 stm32flash- bootloader под Linux для загрузки прошивки в микроконтроллеры STM32, использующий для программирования штатный загрузчик
4 libopenstm32 - библиотека для программирования микроконтроллеров STM32
5 GNU ARM Eclipse Plug-in- плагин для автоматизации создания проектов под микроконтроллеры ARM в Eclipse
6 AVR Plugin for Eclipse- плагин для автоматизации создания проектов под микроконтроллеры AVR в Eclipse
7 GNU AVR Simulator- программный симулятор микроконтроллеров AVR
8 OpenOCD Eclipse Plug-in- плагин Eclipse для использования OpenOCD
9 PIC C Builder for Eclipse- плагин для автоматизации программирования микроконтроллеров PIC в Eclipse

3 Comments to Начинаем использовать SVN в своих проектах

  1. Volldemar's Gravatar Volldemar
    12 марта 2011 at 17:00 | Permalink

    Скачал и установил себе на комп TortoiseSVN (Вин7 х64), а вот дальше то как?
    Что то не понятно, что и как, и куда и кого ;)

Leave a Reply

You must be logged in to post a comment.