Руководство по практическому применению сервиса SVN
1. Что такое SVN (подрывная деятельность)?
SVN — превосходный инструмент управления версиями, который вырос в последние годы. Как и инструмент управления CVS, SVN — это твердотельная, кроссплатформенная система контроля версий с открытым исходным кодом. Менеджер инструментов управления версиями SVN со временем меняет различные данные. Эти данные помещаются в центральный репозиторий (репозиторий), этот архив очень похож на обычный файловый сервер или FTP-сервер, но, в отличие от других серверов, SVN будет выполнять резервное копирование и записывать каждую модификацию файла изменение. Таким образом, мы можем восстановить архив в любой момент времени до старой версии, которую мы хотим, конечно, мы также можем напрямую просматривать указанную историю обновлений.
Почему существует такой проект, как SVN?
Официальное объяснение: Чтобы взять на себя пользовательскую базу CVS, если быть точным, мы написали новую систему контроля версий, которая очень похожа на CVS, но она исправляет многие проблемы, которые CVS ранее не решала. SVN — это очень общая программная система, она часто используется для управления исходным кодом программы, но она также может управлять любыми похожими файлами, такими как текст, видео, изображения и т. Д.
Сайты, связанные с SVN:
Как работать с Tortoise SVN
- Официальный сайт Subversion:
- http://subversion.tigris.org/
- http://subversion.apache.org/
- SVN клиент: http://tortoisesvn.net/
- svn китайский сайт: http://www.iusesvn.com/
- Часто задаваемые вопросы на китайском языке: FQA: http://subversion.apache.org/faq.zh.html
- Официальное руководство: http://svnbook.red-bean.com/
Во-вторых, разница между SVN и git
Централизованная система контроля версий 1.SVN
Централизованное управление данными системы контроля версий SVN, есть центральная библиотека версий, все коды, используемые местными разработчиками для локальной разработки, взяты из этой библиотеки версий, вы должны предоставить код Отправить в этот центральный репозиторий.
Рабочий процесс системы контроля версий SVN выглядит следующим образом:
- 1. Создайте или скопируйте ветку из ствола в центральном хранилище.
- 2. Проверьте код этой ветки из центральной библиотеки.
- 3. Добавьте свой собственный файл кода, измените существующий код или удалите файл кода.
- 4. Зафиксируйте код. Предположим, кто-то отправил код в ветку только сейчас, вам будет предложено, чтобы код устарел.
- Вы должны загрузить свой код перед отправкой. Если во время кода Up возникает конфликт, необходимо разрешить конфликт перед отправкой
Недостатки:
- Если вы не можете подключиться к центральному хранилищу, вы не можете отправить код и добавить код в систему управления версиями;
- Вы не можете просматривать историческую версию кода и процесс изменения версии. Код, переданный в систему контроля версий, по умолчанию выполняется самопроверкой. Если код определенного модуля более сложный и не может быть протестирован в течение короткого времени, то вам нужно подождать долго, чтобы отправить свой код Из-за централизованного управления базой кода необходимо создать резервную копию хранилища центральной версии. Эта распределенная система контроля версий лучше. Svn backup должен создать резервную копию всех данных кода и всех записей измененных версий.
Распределенный контроль версий 2.git
Что такое СИСТЕМА КОНТРОЛЯ ВЕРСИЙ? SVN или GIT?
Git сделан Linus Разработано, поэтому естественно, что файловые системы git и Linux тесно интегрированы, поэтому в Windows вы должны использовать cygwin, чтобы он работал идеально.
Что Git называет распределенной системой контроля версий? Начнем с шаблона.
В Git нет центрального репозитория, но для совместного использования кода командой разработчиков, в некоторой степени, локальный склад и удаленный склад идентичны, и нет главного-подчиненного.
Если ваш проект является проектом с закрытым исходным кодом или вы привыкли к предыдущей модели централизованного управления, то вы также можете работать как SVN в git, и процесс знаний может увеличиться Несколько шагов.
- 1. Вы создаете git-репозиторий локально и добавляете его в удаленный git-репозиторий.
- 2. Вы добавляете или удаляете файлы локально, а затем фиксируете друг друга. Конечно, операция фиксации передается в локальную библиотеку git (фактически она отправляется в каталог объектов в каталоге git).
- 3. Переместите ветвь локальной библиотеки git в ветку удаленной библиотеки git. Если в это время кто-то уже вставил в удаленную библиотеку git удаленную библиотеку git, вам не удастся нажать. В настоящее время вам нужно сначала выполнить извлечение, затем, если возникнет конфликт , Чтобы справиться с конфликтом, после фиксации в локальном репозитории git, затем отправьте его в удаленный репозиторий git.
3. Эксплуатация и техническое обслуживание персонала мастер версия управления
Для системы управления версиями технические моменты, которыми должен овладеть персонал по эксплуатации и обслуживанию:
- 1. Установка, развертывание, обслуживание, отказ.
- 2. Простые в использовании, многие компании управляются разработкой, включая создание учетных записей, добавление и удаление учетных записей.
- 3. Для системы управления версиями персонал по эксплуатации и обслуживанию эквивалентен разработчику, разработчик является владельцем, а система, созданная в процессе эксплуатации и обслуживания, служит разработчику.
Режим работы сервера 4.Svn
Существует три общих метода доступа для служб SVN:
- 1. Независимый сервер
- Адрес доступа, такой как: svn: //svn.etiantian.org/sadoc);
- 2. С помощью http-сервисов, таких как apache
- Адрес доступа, такой как: http://svn.etiantian.org/sadoc);
- А. Установите apache + svn отдельно (не используйте).
- B. CSVN (apache + svn) — это отдельное интегрированное программное обеспечение, программное обеспечение SVN с управлением веб-интерфейсом.
- 3. Локальный прямой доступ (например: file: /// root / svndata / sadoc)
5. Клиентский метод доступа SVN
Клиент SVN может обращаться к серверу различными способами, например: доступ к локальному диску или различные сетевые протоколы, но адрес хранилища всегда является URL-адресом, и URL-адрес отражает Метод доступа.
file:// | Прямой доступ к хранилищу через локальный диск или сетевой диск |
http:// | Доступ к серверу Apache, поддерживающему Subersion, по протоколу WebDAV |
https:// | Аналогичен http: //, но с использованием шифрованного доступа SSL |
svn:// | Доступ к серверу svnserver по пользовательскому протоколу TCP / IP |
svn+ssh:// | Доступ к серверу svnserver через аутентифицированный и зашифрованный пользовательский протокол TCP / IP |
3. Принципиальная схема логической архитектуры системы версий SVN
В-четвертых, установите и настройте сервис SVN
1. Экологическая подготовка
- [[email protected] ~]# cat /etc/redhat-release
- CentOS release 6.5 (Final)
- [[email protected] ~]# uname -r
- 2.6.32-431.el6.x86_64
- [[email protected] ~]# /etc/init.d/iptables stop
- [[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
- [[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
- [[email protected] ~]# yum clean all yum makecache
2. Установите SVN
- [[email protected] ~]# rpm -qa subversion
- subversion-1.6.11-15.el6_7.x86_64
Если вышеуказанного результата нет, вам нужно выполнить следующую команду для установки
- [[email protected] ~]# yum install subversion -y
- [[email protected] ~]# rpm -qa subversion
- subversion-1.6.11-15.el6_7.x86_64
- Добавлено: пакет rpm установки yum не очищается локально после установки
- [[email protected] ~]# grep keepcache /etc/yum.conf
- keepcache=1
3. Настройте и запустите SVN
Создание корневого каталога хранилища данных библиотеки версий SVN (svndata) и пользователя, каталога полномочий доступа к паролям (svnpasswd)
Запустите службу SVN и укажите корневой каталог SVN для доступа
- [[email protected] ~]# svnserve -d -r /home/svndata/
Вы можете просмотреть справку команды svnserve, чтобы понять соответствующие параметры запуска:
- [[email protected] ~]# svnserve —help
- usage: svnserve [-d | -i | -t | -X] [options]
- Valid options:
- -d [—daemon] : daemon mode
- -i [—inetd] : inetd mode
- -t [—tunnel] : tunnel mode
- -X [—listen-once] : listen-once mode (useful for debugging)
- -r [—root] ARG : root of directory to serve
- -R [—read-only] : force read only, overriding repository config file
- —config-file ARG : read configuration from file ARG
- —listen-port ARG : listen port
- [mode: daemon, listen-once]
- —listen-host ARG : listen hostname or IP address
- [mode: daemon, listen-once]
- -T [—threads] : use threads instead of fork [mode: daemon]
- —foreground : run in foreground (useful for debugging)
- [mode: daemon]
- —log-file ARG : svnserve log file
- —pid-file ARG : write server process ID to file ARG
- [mode: daemon, listen-once]
- —tunnel-user ARG : tunnel username (default is current uid’s name)
- [mode: tunnel]
- -h [—help] : display this help
- —version : show program version information
Посмотреть процесс SVN
- [[email protected] ~]# ps -ef |grep svn
- root 3008 1 0 00:32 ? 00:00:00 svnserve -d -r /root/svndata/
- root 3010 2919 0 00:32 pts/0 00:00:00 grep svn
Проверьте порт SVN
- [[email protected] ~]# lsof -i :3690
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- svnserve 3008 root 3u IPv4 53617 0t0 TCP *:svn (LISTEN)
- [[email protected] ~]# netstat -lntup|grep svn
- [[email protected] ~]# lsof -i tcp:3690
3. Создайте репозиторий проекта
Создание нового теста проекта SVN на самом деле похоже на тестирование. Вы можете создавать несколько проектов. Каждый проект соответствует отдельному коду. Вот лишь пример создания проекта.
- [[email protected] ~]# svnadmin create /home/svndata/test
- [[email protected] ~]# tree /home/svndata/test/
- /root/svndata/sadoc/
- |— README.txt
- |— conf
- | |— authz
- | |— passwd
- | `— svnserve.conf
- |— db
- | |— current
- | |— format
- | |— fs-type
- | |— fsfs.conf
- | |— min-unpacked-rev
- | |— rep-cache.db
- | |— revprops
- | | `— 0
- | | `— 0
- | |— revs
- | | `— 0
- | | `— 0
- | |— transactions
- | |— txn-current
- | |— txn-current-lock
- | |— txn-protorevs
- | |— uuid
- | `— write-lock
- |— format
- |— hooks
- | |— post-commit.tmpl
- | |— post-lock.tmpl
- | |— post-revprop-change.tmpl
- | |— post-unlock.tmpl
- | |— pre-commit.tmpl
- | |— pre-lock.tmpl
- | |— pre-revprop-change.tmpl
- | |— pre-unlock.tmpl
- | `— start-commit.tmpl
- `— locks
- |— db-logs.lock
- `— db.lock
- 10 directories, 28 files
4. Настройте файлы конфигурации SVN и разрешения
Скопируйте шаблон файла паролей в соответствующий каталог
- [[email protected] conf]# cp passwd authz /home/svnpasswd/
- [[email protected] conf]# ll /home/svnpasswd/
- total 8
- -rw-r—r— 1 root root 1080 Mar 31 00:51 authz
- -rw-r—r— 1 root root 309 Mar 31 00:51 passwd
Поскольку SVN по умолчанию использует простые текстовые пароли, добавьте разрешения для безопасности
- [[email protected] conf]# cd /home/svnpasswd/
- [[email protected] svnpasswd]# chmod 700 *
- [[email protected] svnpasswd]# ll
- total 8
- -rwx—— 1 root root 1080 Mar 31 00:51 authz
- -rwx—— 1 root root 309 Mar 31 00:51 passwd
5. Создайте пользователя SVN и установите разрешения
- [1. Создать пользователя]
- [[email protected] svnpasswd]# cat passwd
- ### This file is an example password file for svnserve.
- ### Its format is similar to that of svnserve.conf. As shown in the
- ### example below it contains one section labelled [users].
- ### The name and password for each user follow, one account per line.
- [users]
- cyh = 123456
- test = 123..
- itcast = 123456
- [2. Настроить разрешения]
- [[email protected] svnpasswd]# cat authz
- ### This file is an example authorization file for svnserve.
- ### Its format is identical to that of mod_authz_svn authorization
- ### files.
- ### As shown below each section defines authorizations for the path and
- ### (optional) repository specified by the section name.
- ### The authorizations follow. An authorization line can refer to:
- ### — a single user,
- ### — a group of users defined in a special [groups] section,
- ### — an alias defined in a special [aliases] section,
- ### — all authenticated users, using the ‘$authenticated’ token,
- ### — only anonymous users, using the ‘$anonymous’ token,
- ### — anyone, using the ‘*’ wildcard.
- ###
- ### A match can be inverted by prefixing the rule with ‘~’. Rules can
- ### grant read (‘r’) access, read-write (‘rw’) access, or no access
- ### (»).
- [aliases]
- # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
- [groups]
- # harry_and_sally = harry,sally
- # harry_sally_and_joe = harry,sally,https://russianblogs.com/article/5142367666/» target=»_blank»]russianblogs.com[/mask_link]
SVN для чайников. Часть I.
Установка и настройка SVN (сервер+клиент)
По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.С самого начала сообщаю, что для SVN есть подробное руководство. Называется оно svn-book и доступно на сайте и идет вместе с CollabNet Subversion-server. Так же про установку и настройку svnserv с Apache есть описание в учебнике по TortioseSVN (довольно хорошая подробная помощь на русском).
На самом деле SVN-клиент может отлично работать и без сервера. Репозиторий (хранилище кода) можно создать в любом каталоге на собственном HDD, или в сетевом каталоге. Сервер требуется лишь для удаленного доступа к репозиторию, не больше. Локальный репозиторий годится, если над проектом работает один человек и ему просто нужна система контроля версий своего приложения и бэкапы.
Если работа ведется в команде или требуется удаленный доступ к репозиторию (через Интернет, например), нужно устанавливать SVN-сервер. Он может работать самостоятельно, либо через веб-сервер Apache. В первом случае доступ к репозиториям будет по протоколу svn://, во втором — http(s)://. Доступ через веб-сервер нужен при проблемах с файрволом, когда он пропускает только HTTP-трафик, а так же для работы некоторых утилит-примочек к SVN-серверу.
Установка сервера
Самую свежую версию svn-cервера всегда можно найти на сайте subversion.tigris.org. Чистый svn-сервер без Apache в комплекте, и без визуальных примочек доступен только для версии 1.4.6, в то время как текущая версия 1.5.0. Для версии 1.5.0 есть выбор между CollabNet Subversion-server-1.5.0 (~11 MB) и VisualSVN Server (~5 MB). Первый идет в комплекте с Apache, второй — с Apache и плагином для Windows Management Console. Так же для VisualSVN есть платная возможность интеграции с Visual Studio.
A. Установка и настройка сервера VisualSVN (svn-сервер + Apache + консоль управления) самая простая. Эту версию нельзя установить без Apache.
1) Скачиваем файл VisualSVN-Server-1.5.1.msi или новее. Запускаем установку.
2) В мастере установки указываем, использовать ли для доступа HTTPS, либо просто HTTP. Указываем порт для прослушивания по выбранному протоколу и способ аутентификации. Так же указываем каталог, в котором будут храниться репозитории.
3) После установки открываем Management Console (через Пуск, например) и создаем пользователей и репозитории.Теперь ваши репозитории доступны через выбранный протокол (HTTP или HTTPS) по указанному при установке хосту: порту (например, localhost:8443/svn/). Их можно просматривать как из браузера (через xsl), так и из SVN-клиета.
Работа с сервером VisualSVNбезусловно самая простая.
B. Установка CollabNet Subversion Server (svn-сервер + Apache опционально).
1) Скачиваем файл CollabNetSubversion-server-1.5.0-23.win32.exe или версию новее. Запускаем его на установку.
2) Шаг Choose Components. Устанавливаем флажок SVNSERVE в любом случае. Если требуется установить так же Apache для SVN, устанавливаем флажок напротив него.
3) На шаге sunserve Configuration устанавливаем порт для sunserve (по умолчанию 3690, менять его смысла нет, если он не занят) и путь к репозиториям (каталог, где вы будете создавать отдельные репозитории в виде подкаталогов).
4) Затем настраивается Apache: хост/порт, путь к репозиториям (тот же, что и для svnserve) и префикс для URL (http://host:port/prefix). Префикс нужен на случай, если Apache будет использоваться не только для обслуживания SVN.После установки появятся две новых службы Windows: Subversion Server (наш svnserv.exe) и Apache2.2 (если он был включен при установке). Чтобы все заработало их нужно запустить.
С. Установка svnserve 1.4.6 (чистый svn-сервер).
1) Скачиваем файл svn-1.4.6-setup.exe. Запускаем его на установку. При установке ничего кроме целевого каталога указывать не надо. После установки этот каталог надо добавить в переменную среды PATH (не помню, возможно это делается автоматически).
2) Создаем репозитории командой: svnadmin create c:repositoriesexample-repository
3) Создаем сервис. Команда в консоли: sc create svn_svr binpath= «c:Program FilesSubversionbinsvnserve.exe —service -r C:repositories» displayname= «Subversion Svr»
Здесь -r C:repositories — адрес каталога с репозиториями, т.е. от него потом будут вычисляться пути. Например, если есть 2 репозитория: C:repositoriesproj1 и C:repositoriesproj2, то указав параметром -r C:repositories потом пути к репозиториям будут: svn://localhost:3690/proj1 и svn://localhost:3690/proj2 соответственно. Порт 3690 устанавливается по умолчанию, но его можно поменять (подробности в svn book).4) Запускается сервис автоматически при старте Windows или из списка служб.Именно эту работу (если не считать установку Apache) сделал за вас установщик CollabNet Subversion Server. В случае установки svnserve 1.4.6 доступ к репозиторию будет только по протоколу svn://.
D. Создание репозитория. Выделяю этот пункт отдельным разделом. Если в VisualSVN создание репозитория производится кликом мыши, то для svnserve (в том числе в версии от CollabNet) репозиторий создается из консоли. В поставке snv-сервера есть файл snv-install-folderbinsvnadmin.exe.
Если путь к snv-install-folderbin еще не прописан в PATH, сделайте это.
Чтобы создать репозиторий, откройте консоль (cmd) и перейдите в каталог для хранения репозиториев, который вы указывали при установке (CollabNet) или создании сервиса (svnserve 1.4.6). Создайте новый пустой подкаталог (например, example-repository). В консоли выполните команду: svnadmin create example-repository. В только что созданном каталоге появится структура файлов svn. В них есть много полезных «штук», о которых можно почитать в svn-book и учебнике.
В подкаталоге conf можно настроить основные параметры репозитория. Прежде всего требуется закрыть доступ в репозиторий кому-попало. В файле svnserve.conf раскомментируем строки
# anon-access = read
# auth-access = write
Не забудьте убрать так же пробел после #, т.к. иначе будет ошибка чтения конфига. anon-access определяет доступ анонимным пользователям, auth-access — зарегистрированным. Они могут принимать значения «write», «read» и «none». Обычно anon-access = none и auth-access = write.Далее надо раскомментировать # password-db = passwd, а в файл passwd в этом же каталоге добавить строку user = password.
Для начала такое определение доступа годится, но в последствии конечно пароли надо шифровать (читаем svn-book).
На этом установка сервера закончена и можно установить клиент.
Установка клиента.
Некоторые профессионалы предпочитают работать с консолью. Наверное это не самый удобный способ, особенно для новичков, поэтому рассматривать его не будем. Другие работают с SVN через плагины к своим IDE. Это самый лучший способ, но поскольку разных IDE много и плагинов к ним тоже, в этой статье работу с ними не описываем.
Самым популярным и признанным клиентом SVN под Windows является TortoiseSVN. После его установки вы не получите отдельной программы, которую можно «классически запустить», клиент встраивается в проводник Windows, а команды для него доступны из контекстного меню файла (в т.ч. и в Total Commander).
Описывать установку клиента нет никакого смысла, там все элементарно просто.
О том, как работать с TortoiseSVN, подробно расписано в руководстве TortoiseSVN Клиент Subversion для Windows.
Дублировать это подробное руководство, конечно, желания нет, но все же super-fast-start work with tsvn опишу.
1) Для просмотра любого репозитория после установки TortoiseSVN вызовите контекствное меню на любом файле в системе, выберите меню TortoiseSVN→Repo-browser. В открывшемся окошке введите адрес репозитория с протоколом (например, localhost:8443/svn/test или svn://someserver:3690/proj1/trunc). Откроется окно просмотра репозитория (с помощью кнопки напротив строки адреса можно выбрать, какую ревизию просмотреть; HEAD — это последняя ревизия).
2) Для создания локального репозитория (не используя сервер) запускается пункт меню TortoiseSVN→Create repository here. на нужном каталоге. В Repo-browser такой репозиторий доступен по протоколу file:///.
3) Для скачки себе версии из существующего репозитория запускается пункт меню TortoiseSVN→SVN Checkout на каталоге, в который сольется версия.
4) Если вы еще не использовали SVN и хотите залить на сервер свою текущую версию исходников, запустите пункт меню TortoiseSVN→Import. на каталоге, в котором лежит версия (при этом не забудьте, что разрабатываемую ветку надо лить в trunk).
5) TortoiseSVN→Export. используется для получения чистой версии исходников из репозитория (без служебных файлов контроля версий).
6) Если контекстное меню вызвать на каталоге, который является локальной (рабочей) копией репозитория, контекстное меню значительно расшириться. Например, появятся пункты Update (слить последние изменения с сервера) и Commit (закачать ваши изменения на сервер).
На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN.
- SVN
- subversion
- source version control
- контроль версий
Источник: habr.com