Контроль версий - это искусство управления изменениями в информации. Данный инструмент издавна был важен для программистов, которые обычно вносят небольшие изменения в программы, а затем, на следующий день, отменяют эти изменения. Однако, польза от систем контроля версий простирается далеко за границы мира разработки программного обеспечения. Место для систем контроля версий есть везде, где люди используют компьютеры для управления часто изменяющейся информацией
Subversion - это система контроля версий с открытым исходным кодом. Используя Subversion вы можете сохранять историю изменений файлов и документов. Дерево файлов и папок хранится в центральном репозитории похожем на обыкновенный файловый архив, за исключеним того, что сохраняются любые их модификации.
Для доступа к репозиторию Subversion, посредством HTTP протокола, вы должны установить и настроить веб сервер. Apache2 гарантированно работает с Subversion. Для установки и настройки сервера Apache2, обратитесь к подразделу HTTP раздела Apache2. Для доступа к репозиторию Subversion, посредством HTTPS протокола, вы должны установить и настроить цифровой сертификат в веб сервере Apache2. Для установки и настройки цифрового сертификата, обратитесь к подразделу HTTPS раздела Apache2.
Для установки Subversion выполните следующую команду в терминале:
sudo apt-get install subversion libapache2-svn
Данный шаг подразумевает, что вы установили в систему пакеты, отмеченные выше. Данная секция объясняет как создать репозиторий Subversion и получить доступ к проекту
Репозиторий Subversion может быть доступен разными способами - на локальном диске или через разные сетевые протоколы. В любом случае, расположение репозитория всегда ссылка (URL). Таблица объясняет разные схемы ссылок в доступных методах доступа.
Таблица 4.1. Методы доступа
Схема |
Метод доступа |
---|---|
file:// |
прямой доступ к репозиторию (на локальном диске) |
http:// |
Доступ по протоколу WebDAV к вебсерверу Apache2, умеющему работать с системой Subversion |
https:// |
То же самое, что и http://, но с SSL шифрованием |
svn:// |
Доступ через выборочный протокол к серверу svnserve |
svn+ssh:// |
То же самое, что и svn://, но через SSH тунель |
В этой секции объясняется как настроить Subversion для всех этих методов доступа. Здесь мы описываем основы. Для более детального описания, обратитесь к книге svn.
Это самый простой из всех методов доступа. Он не требует запуска никакого процесса сервера Subversion. Этот метод доступа используется для доступа к Subversion с той же машины. Синтакс команды, введенной в строке терминала, следующий:
svn co file:///path/to/repos/project
или
svn co file://localhost/path/to/repos/project
Если вы не указали имя хоста, используйте три слэша (///) - два для протокола (в данном случае - файл) плюс первый слэш в пути. Если вы указали имя хоста, используйте два слеша (//).
Права доступа к репозиторию зависят от прав доступа к файловой системе. Если пользователь обладает правами на чтение/запись - он может производить отладку и вносить изменения в репозиторий
Для доступа к репозиторию Subversion через протокол WebDAV необходимо сконфигурировать сервер Apache 2. Добавьте этот фрагмент в файл /etc/apache2/apache2.conf
:
<Location /svn> DAV svn SVNPath /путь/к/репозиторию AuthType Basic AuthName "Название репозитория" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location>
Следующим шагом необходимо создать файл /etc/subversion/passwd
. Этот файл содержит настройки идентификации. Для добавления записи, например нового пользователя, Вы можете запустить эту команду из окна терминала:
htpasswd2 /etc/subversion/passwd имя_пользователя
Команда запросит ввести пароль. Как только пароль будет введён - пользователь будет добавлен. Теперь, чтобы получить доступ к репозиторию, Вам необходимо выполнить эту команду:
svn co http://имясервера/svn
Передача пароля происходит открытым текстом. Если Вы не хотите, что бы пароль был перехвачен используйте шифрование траффика с применением SSL. Дополнительные сведения Вы можете найти в следующей секции.
Доступ к репозиторию Subversion через протокол WebDAV с применением SSL (https://) похож на http://, за исключением того, что в веб сервере Apache 2 необходимо установить и сконфигурировать цифровой сертификат.
Можно установить цифровой сертификат выданный такой организацией, как Verisign или сертификат, подписанный Вами.
Этот шаг подразумевает, что у вас есть установленный и сконфигурированный цифровой сертификат в веб сервере Apache 2. Для доступа к репозиторию Subversion, обязательно ознакомьтесь с предыдущей секцией! Спобобы доступа такие же, за исключением протокола. Необходимо использовать https:// для доступа к репозиторию Subversion.
Как только репозиторий Subversion будет создан, можно будет сконфигурировать контроль доступа. Для изменения контроля доступа измените файл /путь/к/репозиторию/проект/conf/svnserve.conf
. Например, для включения аутентификации, уберите комментарий на следующих строчках:
# [general] # password-db = passwd
Как только Вы раскомментируете вышеуказанные строки, Вы можете использовать список пользователей из файла passwd. Редактировать необходимо файл passwd
, находящийся в той же директории и добавьте нового ползователя.
username = password
Что бы получить больше информации посмотрите файл.
Теперь что бы получить доступ к Subversion через свой протокол svn:// с того же или с другого компьютера, Вы можете запустить сервер Subversion используя комманду svnserve. Синтаксис:
$ svnserve -d --foreground -r /путь/к/репозиторию # -d -- daemon режим сервиса (невидимый) # --foreground -- запустить на консоль (полезно для отладки) # -r -- корень репозитория Для подробного описания использования команды выполните команду: $ svnserve --help
После запуска этой команды Subversion будет запущен на порту 3690. Для того, что бы сменить репозиторий, необходимо выполнить команду:
svn co svn://имяхотса/проект проект --username имя_пользователя
Если в кониге указано, будет запрошен пароль. После аутентификации, будет проверен код из репозитория Subversion. Для синхронизации локальной копии и репозитория проекта можно выполнить под-команду update. Синтакс введённой команды следующий.
cd директория_проекта ; svn update
Вы можете обратиться к инструкции пользователя, если вас интересует детали использования каждой под-команды Subversion. На пример, что бы узнать больше про комманду "co", запустите эту команду:
svn co help
Конфигурация и процесс сервера такие же как и в случае с svn://. Более подробно описано в предыдущей секции. На этом этапе подразумевается что Вы выполнили предыдущие шаги и запустили сервер Subversion, используя комманду svnserve
Так же подразумевается, что на том же компьютере запущен сервер SSH и на него разрешены входящие соединения. Что бы проверить, попробуйте подключиться к этому компьютеру используя SSH. Если вы зашли в этот компьютер, значит всё замечательно. Если вы не можете войти в этот компьютер, решите эту проблему перед тем, как приступать к дальнейшим шагам.
Протокол svn+ssh:// используется если необходимо подключиться к репозиторию Subversion используя SSL. В этом случае все передаваемые данные будут зашифрованы. Для доступа к репозиторию проекта необходимо использовать следующую комманду:
svn co svn+ssh://hostname/var/svn/репозиторий/проект
Что бы получить доступ к репозиторию Subversion используя этот метод, необходимо ввести полный путь (/путь/к/репозиторию/проекту).
Если в указано в настройках будет запрошен пароль. Необходимо ввести пароль, используемый при подключении через SSH. Если пароль верный, будет проверен код из репозитория Subversion.
CVS - система контроля версий. Её можно использовать для записи истории исходных файлов.
Введите следующую команду в окне термниала для установки cvs:
sudo apt-get install cvs
После того, как вы установите cvs, необходимо установить xinetd для запуска/останова сервера CVS. При запросе введите следующую команду для установки xinetd:
sudo apt-get install xinetd
Once you install cvs, the repository will be automatically initialized. By default, the repository resides under the /var/lib/cvs directory. You can change this path by running following command:
cvs -d /your/new/cvs/repo init
Once the initial repository is set up, you can configure xinetd to start the CVS server. You can copy the following lines to the /etc/xinetd/cvspserver
file.
сервис cvspserver { порт = 2401 тип_сокета= stream протокол = tcp пользователь = root ждать = no тип = UNLISTED сервер = /usr/bin/cvs аргументы_сервера = -f --allow-root /var/lib/cvs pserver отключить = no }
Если была изменена директория по умолчанию (/var/lib/cvs), то необходимо будет изменить репозиторий.
Once you have configured xinetd you can start the cvs server by running following command:
sudo /etc/init.d/xinetd start
Для проверки запущен ли CVS сервер можно использовать команду:
sudo netstat -tap | grep cvs
После того, Вы запустите эту команду, Вы должны увидеть нечто похоже:
tcp 0 0 *:cvspserver *:* LISTEN
После этого можно добавлять новых пользователей, новые проекты и управлять сервером CVS.
CVS позволяет добавлять новых пользователй независимо от установленной у них ОС. Вероятно самый лёгкий путь использовать Linux Users для CVS
This section explains how to add new project to the CVS repository. Create the directory and add necessary document and source files to the directory. Now, run the following command to add this project to CVS repository:
cd your/project cvs import -d :pserver:username@hostname.com:/var/lib/cvs -m "Importing my project to CVS repository" . new_project start
При использовании вышеуказанной команды cvs можно отказаться от опции -d. Для этого необходимо использовать переменную окружения CVSROOT.
The string new_project is a vendor tag, and start is a release tag. They serve no purpose in this context, but since CVS requires them, they must be present.
Обратите внимание, что при добавлении нового проекта пользователь должен иметь доступ на запись в репозиторий CVS (/var/lib/cvs). По умолчанию, группа src имеет доступ на запись в репозиторий CVS. Таким образом учётная запись может быть добавлена в эту группу и пользователь сможет добавлять и управлять проектами в репозитории CVS.