svn
Категория:Виртуальный хостинг -> Сервисы и средства разработки
Содержание
Subversion
Subversion – это бесплатная централизованная система контроля версий. Существуют клиенты subversion под ОС Windows и UNIX-подобные.
Официальный сайт: http://subversion.tigris.org/
Клиенты для Windows: TortoiseSVN, инструкция по работе
Клиенты для UNIX: svn
Система контроля версий нужна в первую очередь для совместной разработки программного обеспечения. Каждый из разработчиков имеет свою рабочую копию проекта, в которую он вносит изменения. Разработчики вносят свои изменения в систему контроля версий, после чего их изменения становятся доступны всем другим разработчикам. Таким образом цикл разработки можно представить как:
- Получение локальной рабочей копии(с помощью команды svn checkout). Требуется выполнить команду один раз.
- Внесение изменений в локальную рабочую копию.
- Обновление локальной рабочей копии(с помощью команды svn update)
- Добавление изменений в репозиторий(с помощью команды svn commit)
Действия по пунктам 2-4 повторяются циклично. Каждое изменение репозитория, вызванное добавлением изменений из локальной рабочей копии разработчиков в репозиторий, называется ревизией.
Таким образом, можно получить определенную версию проекта, которая характерезуется номером ревизии. Или посмотреть изменения, например с ревизии номер 14 до 15.
Создание svn репозитория
Для того, чтобы создать subversion репозиторий, необходимо зайти в панель управления, перейти в раздел «Управление» пункт Сайты и создать новый сайт с типом svn. Можно также изменить тип для уже существующего сайта.
Доступ к svn репозиторию
Доступ к subversion репозиторию осуществляется посредством протокола http. Авторизация пользователей осуществляется с помощью файла .htpasswd, который находится в директории сайта. репозиторий так же расположен в директории сайта.
Как работать с файлом .htpasswd можно узнать здесь
Работа с svn репозиторием
Прежде всего необходимо создать пользователя с паролем в файле .htpasswd, как описано выше.
Сам же svn репозиторий находится в папке svn вашего сайта.
checkout
Далее необходимо получить локальную рабочую копию. Сделать это можно с помощью следущей команды:
$ svn checkout —username=phusermv —password=strongpasswd http://13.phusermv.z8.ru Store password unencrypted (yes/no)? yes A 13.phusermv.z8.ru/README A 13.phusermv.z8.ru/index.php Checked out revision 2.
где phusermv и strongpasswd – логин и пароль пользователя, http://13.phusermv.z8.ru/ – адрес сайта. После чего, в каталоге 13.phusermv.z8.ru создастся локальная рабочая копия нашего репозитория.
add
Для того чтобы добавить файл в систему контроля версий, необходимо выполнить команду:
svn add путь_к_файлу
Например, создадим файл main.c в директории с рабочей копией:
status
$ touch main.c $ svn status ? main.c
Команда svn status показывает краткий вывод о файлах и директориях в рабочей копии.
- Флаг ‘?’ – означает, что файл не находится под управлением системы контроля версий.
- Флаг ‘M’ – означает, что файл в нашей рабочей копией имеет какие-либо модификации.
- Флаг ‘A’ – означает, что файл добавлен под управление системой контроля версий.
Содержание файла main.c будет следущим:
int main(int argc, char **argv) {
return 0;
}
Далее выполняем команду svn add:
$ svn add main.c A main.c $ svn status A main.c
Как мы видим, результат выполнения команды svn status изменился: теперь файл main.c помечен как добавленный в систему контроля версий. Чтобы внести изменения локальной рабочей копии в svn-репозиторий необходимо выполнить следущую команду:
update, commit
$ svn update At revision 2. $ svn commit -m «Added new file main.c. The body of our program» Adding main.c Transmitting file data . Committed revision 3.
Команда svn update служит для обновления рабочей копии. Рекомендуется всегда обновлять рабочие копии перед командой svn commit, для того, чтобы поддерживать их в актуальном состоянии. Команда svn commit -m принимает аргумент в виде комментария, который описывает данный commit. Внесем локальные изменения в файл main.c, теперь его содержимое будет таким:
#include
/* * This program will print «Hello, world» to the <stdout> and exit * with status code 0 */
int main(int argc, char **argv) { printf(’%s\n’, «Hello, World!»); return 0;
}
diff
С помощью команды svn diff можно увидеть разницу между локальной рабочей копией и репозиторием. Например:
$ svn diff Index: main.c =============================================================== —- main.c (revision 3) +++ main.c (working copy)-1,3 +1,10+#include+ +/* + * This program will print «Hello, world» to the and exit + * with status code 0 + */ int main(int argc, char **argv) { + printf(»%s\n», «Hello, World!»); return 0; }
Более подробную справку о возможностях subversion можно получить на официальном сайте и из командной строки, с помощью команды svn help
