6 Июнь 2010

Установка и настройка системы контроля версий

Установка и настройка системы контроля версий

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

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

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

Начинаем погружение в знания! С места и в карьер.

Система контроля версий имеет серверную и клиентскую часть.

Серверная часть стоит, как вы понимаете, на сервере и хранит информацию обо всех этапах разработки проекта.

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

В данной статье мы разберем процесс установки серверной части на наш сервер под управлением ОС ArchLinux, детальным образом препарированный в видеокурсе «Хостинг на домашнем компьютере». А также установим и настроим клиентскую часть системы контроля версий под ОС Windows (думаю, что на подавляющем большинстве рабочих компьютеров веб-мастеров установлен именно он).

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

Что может система контроля версий:

  • Участник команды разработки, после внесения изменений в какие-либо файлы разрабатываемого сайта или создания новых файлов, может отправить информацию на сервер (посредством клиентской части системы контроля версий), снабдив ее текстовым примечанием. Другие участники команды также могут отправлять свои правки на сервер.
  • Любой из команды, перед началом очередного этапа разработки, может получить с сервера свежую версию сайта, содержащую правки всех остальных членов команды.
  • На сервере хранится информация о каждом из отправленных изменений. Можно ознакомиться с текстовым пояснением и наглядно увидеть, что именно дописано или удалено в файле сайта.

От общих слов переходим к делу.

Установка серверной части системы контроля версий на ArchLinux

Серверная часть называется subversion

Для ее установки на сервер, как и обычно, необходимо авторизоваться под суперпользователем root (или получить права суперпользователя, при помощи команды su – подробно о получении прав суперпользователя).

После авторизации можно запустить установку знакомой командой:

pacman –S subversion

При первой установке данного пакета вы можете оценить всю мощь менеджера pacman: поскольку для работы subversion необходимы некоторые программы, не входящие в основной пакет, pacman сам обнаружит недостающее и установит все необходимые части.

После того, как серверная часть установлена, необходимо создать отдельного пользователя, под которым будет работать subversion.

Наиболее удобным, безопасным и, на мой взгляд, логичным является создание отдельных пользователей под каждую из специфических задач. Поэтому, не смотря на то, что мы уже создали пользователя http, под которым работает Apache (см. видеокурс по настройке сервера), для subversion мы создадим нового пользователя.

Этот свежесоздаваемый пользователь, будет не совсем нормальным. Мы отключим у него возможность работы с командной строкой. Для простоты создания такого недопользователя предлагаю воспользоваться уже готовой командой:

useradd -d /home/svn -r -s /bin/false -U svn

Кроме привычной нам команды на создание пользователей adduser, существует другая ее разновидность – useradd. Данная команда может запускаться с модифицирующими ключами, посредством которых ArcLinux информируется о том, какого именно пользователя мы создаем.

Так например в команде useradd -d /home/svn -r -s /bin/false -U svn:

  • home/svn – это домашняя папка данного пользователя.
  • Ключ -r говорит о том, что создаваемый аккаунт системный.
  • -s /bin/false – отключает командную строку для данного пользователя (она ему совершенно не нужна, т.к. логиниться и что-либо настраивать мы под ним не будем).
  • -U – ключ, говорящий о том, что имя пользователя и его группа будут одинаковыми.
  • svn – это имя и группа нашего нового недопользователя, прошу любить и жаловать.

Помните, что для просмотра справки по интересующей команде (включая все ее ключи) необходимо ввести man useradd (для выхода из режима просмотра справки просто нажмите q).

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

Увидеть информацию обо всех пользователях можно введя команду:

cat /etc/shadow

Просмотр созданных пользователей в ArchLinux

Теперь необходимо создать домашнюю папку недопользователя /home/svn, так как домом для пользователя svn мы ее назначили, а создать – не создали. Заодно создадим в каталоге svn подкаталог repos, для хранения файлов системы контроля версий.

Чтобы создать каталоги, воспользуемся простой командой:

mkdir -p /home/svn/repos

Благодаря ключу -p будет создан не только каталог repos, но и домашний каталог svn, внутри папки home.

Т.к. мы создаем данные каталоги из-под суперпользователя root, то, что совершенно логично, root будет считаться их создателем. Поэтому, дабы наш пользователь svn, под которым будет запускаться subversion мог работать с каталогами, не забудьте поменять создателя с root-а на svn-a. В этом вам поможет команда рекурсивной замены создателя:

chown -R svn:svn /home/svn

Благодаря ключу -R, все каталоги внутри /home/svn (включительно) изменят своего создателя на пользователя snv из группы svn.

Теперь давайте посмотрим на содержимое файла /etc/conf.d/svnserve (для просмотра содержимого можете воспользоваться моим любимым mc).

Вот так выглядит он по умолчанию:

# Parameters to be passed to svnserve
#
#SVNSERVE_ARGS="-r /path/to/some/repos"
SVNSERVE_ARGS=""
#SVNSERVE_USER="svn"

А вот как он должен выглядеть:

# Parameters to be passed to svnserve
#
#SVNSERVE_ARGS="-r /path/to/some/repos"
SVNSERVE_ARGS="-r /home/svn/repos"
SVNSERVE_USER="svn"

В данном файле мы задаем домашнюю папку для хранения файлов проектов.

Строка SVNSERVE_USER говорит о том, что subversion будет запускаться от имени пользователя svn.

Все настройки сделаны, давайте запустим демона svnserve, отвечающего за работу пакета subversion:

/etc/rc.d/svnserve start

Запуск SVN subversion

Теперь пришло время создать место для хранения файлов нового проекта, под названием test. Сделать это можно при помощи вот такой команды:

svnadmin create /home/svn/repos/test

Если все пройдет успешно каталог /home/svn/repos/test наполнится конфигурационными файлами, относящимися к новому проекту под названием test.

Конфигурационные файлы репозитория subversion

Теперь нам осталось настроить авторизацию для свежесозданного хранилища версий проекта test.

Открываем на редактирование файл /home/svn/repos/test/conf/svnserve.conf

Первым делом запрещаем доступ к хранилищу анонимным пользователям – для этого находим в открытом конфигурационном файле строчку:

# anon-access = read и заменяем ее на anon-access = none (не забудьте стереть знак # перед anon-access).

Ниже расположена строчка # auth-access = write

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

auth-access = write

Далее необходимо аналогичным образом раскомментировать строки password-db = passwd и authz-db = authz в этом же файле (они расположены еще ниже).

Осталось нам всего-на-всего создать аккаунт для подключения к серверной части системы контроля версий. Пусть это будет пользователь с именем user и паролем test.

Для этого мы открываем на редактирование файл /home/svn/repos/test/conf/passwd и под строчкой

# sally = sallyssecret

дописываем:

user = test

Теперь разрешим пользователю user записывать и читать файлы системы контроля версий. Для этого откроем на редактирование еще один конфигурационный файл /home/svn/repos/test/conf/authz и в самом низу допишем:

[/]
user = rw

Поскольку, при создании нового хранилища для проекта test, мы работали под суперпользователем, все файлы в папке /home/svn/repos/test (включительно) будут иметь создателя root. Чтобы все работало необходимо знакомым нам методом поменяем создателя с root на svn еще раз:

chown -R svn:svn /home/svn/repos

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

Установка и настройка клиентской части системы контроля версий

В качестве клиентской части системы контроля версий будет выступать программа tortoisesvn.

Это замечательная бесплатная программа-клиент для Windows, которую можно скачать здесь.

Если вы не знаете, какую версию вам качать (32-х или 64-х битную), то качайте 32-х, т.к. если бы у вас был 64-х битный Windows, то вы бы об этом факте знали уж наверняка.

В процессе установки нет ничего сложного, просто следуем инструкциям. После завершения работы мастера – перезагружаемся.

Предположим, что где-то на жестком диске рабочего компьютера веб-мастера (я имею ввиду машину с ОС Windows) расположена пустая папка test, которая будет содержать файлы проекта. Именно ее содержимое, которым папка наполнится чуть позже, мы и будем контролировать нашей системой контроля версий.

Для привязки папки к серверной части системы, необходимо кликнуть на папку правой клавишей мыши и выбрать пункт SVN Checkout.

Хочу еще раз обратить ваше внимание, в процессе первой привязки папки к системе контроля версий (операция Checkout) папка test должна быть пуста.

Связь с SVN сервером

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

Настройка связи с сервером контроля версий

В строке URL of repository я указал IP-адрес своего локального сервера. В вашем случае, уважаемый читатель, вместо 192.168.0.200 необходимо указать IP-адрес сервера, на который вы установили subversion.

Если соединение произойдет успешно, вас попросят ввести логин и пароль. Как вы помните логин – user, пароль – test.

Авторизация SVN

В папке test, в качестве примера, я создал текстовый файл privet.txt с каким-то там текстом. Данное изменение (создание нового файла в проекте) я хочу сделать доступным для обновления других членов команды разработки, для этого в контекстном меню (клик правой клавишей мыши по папке test) мне нужно выбрать пункт SVN Commit…

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

SVN Commit

Теперь все остальные члены команды, кликнув по своим локальным папкам с проектом правой клавишей мыши и выбрав пункт SVN Update, смогут получить файл privet.txt, а вместе с ним и все остальные изменения других разработчиков (т.е. свежую версию проекта).

SVN Update

Интересным пунктом контекстного меню папки является пункт Sow log:

Show log

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

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

У данного поста есть спонсор (как им стать):

Если вы не хотите тратить время на обучение веб-строительству, разработка сайтов сторонней компанией - это то, что вам нужно.

С уважением, Андрей Морковин.

MAXCACHE: 0.86MB/0.00029 sec