SVN - быстрый старт (профессиональная версия)
Материал из 1GbWiki.
Версия 07:32, 16 мая 2011 (править) Dmach (Обсуждение | вклад) м (Правки 184.106.97.135 (обсуждение) откачены к версии Dmach) ← К предыдущему изменению |
Текущая версия (14:20, 4 октября 2018) (править) (отменить) Renton (Обсуждение | вклад) (→Добавление пользователей) |
||
(17 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
== Общие сведения == | == Общие сведения == | ||
- | Эта статья поможет понять как развернуть собственный svn-репозиторий в своем домашнем каталоге на UNIX-хостинге 1Gb.ru. Главное отличие от предложения [http://www.1gb.ru/services_svn.php Услуги хостинга Subversion (SVN)] заключается в том, что вы имеете полный доступ | + | Эта статья поможет понять как развернуть собственный svn-репозиторий в своем домашнем каталоге на UNIX-хостинге 1Gb.ru. Главное отличие от предложения [http://www.1gb.ru/services_svn.php Услуги хостинга Subversion (SVN)] заключается в том, что вы имеете полный доступ ко всем файлам репозитория, можете конфигурировать его по-своему усмотрению, уставливать любые плагины и хуки, делать импорт и экспорт дампов. В дополнение, доступ к хранилищу обеспечивается по протоколам SVN/SSH обеспечивающие максимально быструю и безопасную передачу данных. |
Репозиторий доступен по вашему доменному имени и будет работать на выделенном порту. | Репозиторий доступен по вашему доменному имени и будет работать на выделенном порту. | ||
=== Создание репозитория, службы SVN === | === Создание репозитория, службы SVN === | ||
- | + | '''1.''' В разделе личного кабинета /Хостинг HTTP служб/ добавляем к сайту демон SVN (если вы хотите интегрировать его с Trac, то нужно выбрать сайт, на которой и будет Trac установлен): | |
[[Изображение:Svnd_add.jpg|500px|thumb|left|Добавление службы SVN к сайту]]<br clear="both" /> | [[Изображение:Svnd_add.jpg|500px|thumb|left|Добавление службы SVN к сайту]]<br clear="both" /> | ||
После успешного добавления службы в таблице появятся ее параметры, обратите внимание на '''номер порта''' на котором будет работать ваша служба: | После успешного добавления службы в таблице появятся ее параметры, обратите внимание на '''номер порта''' на котором будет работать ваша служба: | ||
[[Изображение:Svnd_add_ok_1.jpg|500px|thumb|left|Параметры службы]]<br clear="both" /> | [[Изображение:Svnd_add_ok_1.jpg|500px|thumb|left|Параметры службы]]<br clear="both" /> | ||
- | + | '''2.''' Создаем репозиторий: | |
- | $ mkdir ~/svn; cd ~/svn && svnadmin create | + | $ mkdir ~/svn; cd ~/svn && svnadmin create '''my_repo''' |
---- | ---- | ||
'''Важное замечание.''' Репозиторий будет работать только в каталоге '''~/svn''', поэтому не забывайте создавать его именно в нем. | '''Важное замечание.''' Репозиторий будет работать только в каталоге '''~/svn''', поэтому не забывайте создавать его именно в нем. | ||
---- | ---- | ||
+ | <br /> | ||
=== Добавление пользователей === | === Добавление пользователей === | ||
- | + | '''1.''' В разделе личного кабинета /Дополнительные FTP логины/ создаем дополнительного SSH-пользователя, для работы с SVN через SSH-туннель: | |
[[Изображение:Add_ssh_aux_login.jpg|500px|thumb|left|Добавление логина в личном кабинете]]<br clear="both" /> | [[Изображение:Add_ssh_aux_login.jpg|500px|thumb|left|Добавление логина в личном кабинете]]<br clear="both" /> | ||
в случае успешного добавления, в таблице появится такая запись: | в случае успешного добавления, в таблице появится такая запись: | ||
Строка 24: | Строка 25: | ||
Этот пользователь сможет работать с SVN репозиторием через SSH-туннель. | Этот пользователь сможет работать с SVN репозиторием через SSH-туннель. | ||
- | + | '''2.''' Добавляем пользователя, редактируя файл <code>~/svn/название_репозитория/conf/passwd</code>: | |
[users] | [users] | ||
имя_пользователя = пароль | имя_пользователя = пароль | ||
Строка 31: | Строка 32: | ||
'''''Примечание.''''' Для удобства можно использовать те же логин/пароль, что и для дополнительного SSH-входа. | '''''Примечание.''''' Для удобства можно использовать те же логин/пароль, что и для дополнительного SSH-входа. | ||
---- | ---- | ||
+ | <br /> | ||
Этот пользователь сможет работать с SVN репозиторием по протоколу SVN. | Этот пользователь сможет работать с SVN репозиторием по протоколу SVN. | ||
Строка 39: | Строка 41: | ||
Если вы хотите запретить анонимный доступ на чтение репозитория по протоколу SVN, то в файле <code>~/svn/название_репозитория/conf/svnserve.conf</code> в секции <code>[general]</code> добавьте строки: | Если вы хотите запретить анонимный доступ на чтение репозитория по протоколу SVN, то в файле <code>~/svn/название_репозитория/conf/svnserve.conf</code> в секции <code>[general]</code> добавьте строки: | ||
anon-access = none | anon-access = none | ||
+ | auth-access = write | ||
password-db = passwd | password-db = passwd | ||
Строка 44: | Строка 47: | ||
==== Протокол SVN ==== | ==== Протокол SVN ==== | ||
Работа с репозиторием по протоколу SVN является наиболее быстрой и удобной, прекрасна реализована как в Windows, так и в UNIX системах. | Работа с репозиторием по протоколу SVN является наиболее быстрой и удобной, прекрасна реализована как в Windows, так и в UNIX системах. | ||
- | + | '''1.''' UNIX, работа через консольный клиент <code>svn</code>: | |
- | svn --username=имя_пользователя list svn://адрес_вашего_сайта:SVN_порт/название_репозитория | + | svn --username=имя_пользователя list svn://адрес_вашего_сайта:'''SVN_порт'''/название_репозитория |
'''имя_пользователя''' - это имя из файла ~/svn/название_репозитория/conf/passwd<br /> | '''имя_пользователя''' - это имя из файла ~/svn/название_репозитория/conf/passwd<br /> | ||
Строка 52: | Строка 55: | ||
'''название_репозитория''' - имя, которое вы задавали в команде <code>svnadmin create</code><br /> | '''название_репозитория''' - имя, которое вы задавали в команде <code>svnadmin create</code><br /> | ||
- | + | '''2.''' Windows TortoiseSVN | |
Пример ввода URL в Repository Browser: | Пример ввода URL в Repository Browser: | ||
[[Изображение:Repo_browser_url_1.jpg|500px|thumb|left|Ввод URL]]<br clear="both" /> | [[Изображение:Repo_browser_url_1.jpg|500px|thumb|left|Ввод URL]]<br clear="both" /> | ||
Строка 60: | Строка 63: | ||
==== Протокол SSH ==== | ==== Протокол SSH ==== | ||
- | + | '''1.''' Работа из UNIX через консольный клиент <code>svn</code>. | |
Прежде всего, у себя на локальной машине нужно сделать настройку svn клиента для работы по SSH-туннелю через специальный порт. Для этого в файле <code>~/.subversion/config</code> в секции <code>[tunnels]</code> добавьте строку: | Прежде всего, у себя на локальной машине нужно сделать настройку svn клиента для работы по SSH-туннелю через специальный порт. Для этого в файле <code>~/.subversion/config</code> в секции <code>[tunnels]</code> добавьте строку: | ||
- | sshtunnel = ssh -p 2222 | + | sshtunnel = ssh -p 2222 -q |
Вообще тут возможны два варианта работы: авторизация по паролю, и авторизацию по ключу. | Вообще тут возможны два варианта работы: авторизация по паролю, и авторизацию по ключу. | ||
Строка 86: | Строка 89: | ||
Это наиболее быстрый и безопасный способ работы с репозиторием. Работа идет по протоколу SVN, но не с удаленным сервером, а с локальной машиной (портом), на которую проброшен по защищенному SSH-каналу порт с удаленной машины. | Это наиболее быстрый и безопасный способ работы с репозиторием. Работа идет по протоколу SVN, но не с удаленным сервером, а с локальной машиной (портом), на которую проброшен по защищенному SSH-каналу порт с удаленной машины. | ||
- | + | '''1.''' Для UNIX систем достаточно сделать так: | |
$ ssh -f -C -N -p 2222 -L 3690:адрес_вашего_сайта:SVN_порт имя_пользователя@адрес_вашего_сайта | $ ssh -f -C -N -p 2222 -L 3690:адрес_вашего_сайта:SVN_порт имя_пользователя@адрес_вашего_сайта | ||
Строка 96: | Строка 99: | ||
$ svn --username=имя_пользователя list svn://localhost/название_репозитория | $ svn --username=имя_пользователя list svn://localhost/название_репозитория | ||
- | + | '''2.''' Для Windows: | |
Основные настройки для доступа по SSH на сервер через PuTTY см. в статье [[Юникс шелл]], здесь будет только отмечена секция настройки туннелинга. | Основные настройки для доступа по SSH на сервер через PuTTY см. в статье [[Юникс шелл]], здесь будет только отмечена секция настройки туннелинга. | ||
[[Изображение:Putty_tunnel_svn_add_1.jpg|350px|thumb|left|Добавление опция туннеля]]<br clear="both" /> | [[Изображение:Putty_tunnel_svn_add_1.jpg|350px|thumb|left|Добавление опция туннеля]]<br clear="both" /> |
Текущая версия
Содержание |
[править] Общие сведения
Эта статья поможет понять как развернуть собственный svn-репозиторий в своем домашнем каталоге на UNIX-хостинге 1Gb.ru. Главное отличие от предложения Услуги хостинга Subversion (SVN) заключается в том, что вы имеете полный доступ ко всем файлам репозитория, можете конфигурировать его по-своему усмотрению, уставливать любые плагины и хуки, делать импорт и экспорт дампов. В дополнение, доступ к хранилищу обеспечивается по протоколам SVN/SSH обеспечивающие максимально быструю и безопасную передачу данных. Репозиторий доступен по вашему доменному имени и будет работать на выделенном порту.
[править] Создание репозитория, службы SVN
1. В разделе личного кабинета /Хостинг HTTP служб/ добавляем к сайту демон SVN (если вы хотите интегрировать его с Trac, то нужно выбрать сайт, на которой и будет Trac установлен):
После успешного добавления службы в таблице появятся ее параметры, обратите внимание на номер порта на котором будет работать ваша служба:
2. Создаем репозиторий:
$ mkdir ~/svn; cd ~/svn && svnadmin create my_repo
Важное замечание. Репозиторий будет работать только в каталоге ~/svn, поэтому не забывайте создавать его именно в нем.
[править] Добавление пользователей
1. В разделе личного кабинета /Дополнительные FTP логины/ создаем дополнительного SSH-пользователя, для работы с SVN через SSH-туннель:
в случае успешного добавления, в таблице появится такая запись:
Этот пользователь сможет работать с SVN репозиторием через SSH-туннель.
2. Добавляем пользователя, редактируя файл ~/svn/название_репозитория/conf/passwd
:
[users] имя_пользователя = пароль
Примечание. Для удобства можно использовать те же логин/пароль, что и для дополнительного SSH-входа.
Этот пользователь сможет работать с SVN репозиторием по протоколу SVN.
В файле ~/svn/название_репозитория/conf/authz
можно задать "права" для созданного пользователя. Назначим обычные - "чтение-запись":
[/] имя_пользователя = rw
Если вы хотите запретить анонимный доступ на чтение репозитория по протоколу SVN, то в файле ~/svn/название_репозитория/conf/svnserve.conf
в секции [general]
добавьте строки:
anon-access = none auth-access = write password-db = passwd
[править] Настройка клиентов, тестирование подключений
[править] Протокол SVN
Работа с репозиторием по протоколу SVN является наиболее быстрой и удобной, прекрасна реализована как в Windows, так и в UNIX системах.
1. UNIX, работа через консольный клиент svn
:
svn --username=имя_пользователя list svn://адрес_вашего_сайта:SVN_порт/название_репозитория
имя_пользователя - это имя из файла ~/svn/название_репозитория/conf/passwd
адрес_вашего_сайта - сайт, на котором вы создали SVN-даемон;
SVN_порт - порт, на котором работает SVN-даемон, указан в разделе кабинета /Хостинг HTTP служб/
название_репозитория - имя, которое вы задавали в команде svnadmin create
2. Windows TortoiseSVN Пример ввода URL в Repository Browser:
Обзор репозитория:
[править] Протокол SSH
1. Работа из UNIX через консольный клиент svn
.
Прежде всего, у себя на локальной машине нужно сделать настройку svn клиента для работы по SSH-туннелю через специальный порт. Для этого в файле ~/.subversion/config
в секции [tunnels]
добавьте строку:
sshtunnel = ssh -p 2222 -q
Вообще тут возможны два варианта работы: авторизация по паролю, и авторизацию по ключу.
Первый способ безопасен, но требует постоянного ввода пароля при доступе к SVN-репозиторию, при этом не нужно делать никаких дополнительных настроек как на сервере, так и на клиенте. Работает так:
$ svn list svn+sshtunnel://имя_пользователя@адрес_вашего_сайта/название_репозиторя Password:
команда попросит вас ввести пароль, который вы указывали при создании дополнительного SSH/SVN пользователя в разделе кабинета /Дополнительные FTP логины/.
Второй способ заключается в настройке беспарольного доступа на основе авторизации по ключам. В Интернете масса информации по этому вопросу, поэтому мы остановимся только ньюансах.
Важное замечание. После того, как вы разместили публичный ключ на сервере в файл ~/.ssh/authorized_keys
обязательно добавьте в начало строки (до слов ssh-rsa
или ssh-dsa
) с ключем следующий код:
command="[ ${USER} != имя_пользователя ] && exit" ssh-rsa AAAAB3N ... == user@hostname
имя_пользователя - имя пользователя из раздела кабинета /Дополнительные FTP логины/, соответственно это же имя должен использовать тот человек, чей ключ вы разместили на сервере.
В этом случае команда:
$ svn list svn+sshtunnel://имя_пользователя@адрес_вашего_сайта/название_репозиторя
не будет спрашивать про пароль.
[править] Туннель SSH
Это наиболее быстрый и безопасный способ работы с репозиторием. Работа идет по протоколу SVN, но не с удаленным сервером, а с локальной машиной (портом), на которую проброшен по защищенному SSH-каналу порт с удаленной машины.
1. Для UNIX систем достаточно сделать так:
$ ssh -f -C -N -p 2222 -L 3690:адрес_вашего_сайта:SVN_порт имя_пользователя@адрес_вашего_сайта
имя_пользователя - это имя из файла ~/svn/название_репозитория/conf/passwd
адрес_вашего_сайта - сайт, на котором вы создали SVN-даемон;
SVN_порт - порт, на котором работает SVN-даемон, указан в разделе кабинета /Хостинг HTTP служб/
Тогда работать с SVN можно уже так:
$ svn --username=имя_пользователя list svn://localhost/название_репозитория
2. Для Windows: Основные настройки для доступа по SSH на сервер через PuTTY см. в статье Юникс шелл, здесь будет только отмечена секция настройки туннелинга.
После соединения с сервером по SSH в TortoiseSVN можно использовать такие URL:
svn://localhost/название_репозитория
[править] См. также
[править] Ссылки
- Subversion (рус.) - общая информация по Subversion на сайте wikipedia.
- Управление версиями в Subversion (рус.) - официальная документация по Subversion.
- TortoiseSVN (рус.) - документация по TortoiseSVN.