Заинтересовавшись использованием SVN при разработке, решил установить Subversion на свой роутер дабы иметь доступ к своему репозитарию из любой точки мира, имеющей интернет.
Итак, установка.....
1. Ставим сам svn
ipkg install svn
2. Создаем директорию для репозитария и сам репозитарий
mkdir /opt/share/svn
svnadmin create /opt/share/svn/repos
ВАЖНО: Создавать директории внутри репозитария следует с помощью клиента (например TortoiseSVN), подключившись под учетной записью админа. Папки созданные через консоль командой mkdir не будут читаться сервером, и авторизация пользователей, доступ которых разрешен к этой папке, будет провалена.
3. Проверить установился ли репозитарий можно командой "ls /opt/share/svn/repos ". Комнда должна вернуть следующую стуктуру:
conf/ dav/ db/ format hooks/ locks/ README.txt
4. Конфигурируем сервер svn (vi /opt/share/svn/repos/conf/svnserve.conf)
[general]
#запрет на доступ анонимусам
anon-access = none
#право записи для авторизованных
auth-access = write
#файл с паролями
password-db = passwd
#файл с настройками прав доступа
authz-db = authz
#месага появляющаяся при обращении к репозитарию
realm = MEV Repository
5. Конфигурируем файл с правами доступа (vi /opt/share/svn/repos/conf/authz)
[groups]
admins = mev
groupofproject1 = mev , test , test2
#к корню имеет доступ только члены группы админов
[/]
@admins = rw
* =
#к project1 имеет доступ группа groupofproject1 + админы
[/project1]
@groupofproject1 = rw
* =
6. Конфигурируем файл с паролями (vi /opt/share/svn/repos/conf/passwd)
[users]
mev = secret
test = testsecret
test2 = test2secret
7. Добавляем правила для файерволла
[admin@mev root]$ cat /usr/local/sbin/post-firewall
#!/bin/sh
iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
iptables -I INPUT -p udp --dport 3690 -j ACCEPT
8. Устанавливаем автозапуск при старте роутера.
[admin@mev root]$ cat /opt/etc/init.d/S66svn
#!/bin/sh
/opt/bin/svnserve -d -r /opt/share/svn/repos/
Строка подключения будет выглядеть так:
- для группы admins: svn://192.168.1.1/
- для группы groupofproject1: svn://192.168.1.1/project1
Вуаля, берем клиента для SVN, к примеру TortoiseSVN, и проверяем доступ к хранилищу. Все будет работать!
Примечание: будьте осторожны при копировании - можете прихватить с собой тег.
Популярность: 23%
Связанные записи
Распечатать запись
у меня усе пашет
а у меня иногда подвисает при коннекте
клиент как будто ждёт чегото
через пять минут сдвигается и начинает работать
если сделать по svn+ssh то всё ок
Спасибо большое. то-что искал.
Большое спасибо ! С начала ставил как описывалось тут , в принципе все настроил только не все понял, что настроил, теперь все стало яснее. Осталось уговорить что бы запускалось после при запуске…
хм … все работает, но есть одно но. Был один проект скажем project1 и в нем было например 10 ревизий, то когда создается второй проект project2 то он будет начинаться с 11 ревизии. Т.о. получается что имеется один репозитарий просто в нем разные папки сохраняются, как по мне то не совсем удобно для нескольких проектов
Не работает. Пишет
svn: No repositary in svn://192.168.1.1
Создайте репозитарий – заработает.
Для начала прямо по инструкции без отсебятины сделал.
Работает только под mev – полный доступ ко всему репозиторию. А вот под test и test2 получаю «Authorization failed»
В чем проблема?
А куда ваши test и test2 пытаются подключиться? К корню или к внутренней директории? Если второе, то создана ли сама директория?
Подключение делаю так:
svn://192.168.1.1/svn
Папку project1 создавал так
mkdir /opt/share/svn/repos/project1
и пробовал так
mkdir /opt/share/svn/project1
но их при подключении не видит даже админ.
админ видит: /svn/repos и все, что туда через TortoiseSVN сам же и залил.
Если логин и/или пароль введены неправильно, то сообщение «Authorization failed» не появляется. Просто 3 раза запрашивается и вылетает.
А вот если правильно, но не админ (видящий корень), то тогда вылетает сообщение.
mkdir /opt/share/svn/project1 – это что? Если второй репозитарий, то создается через svnadmin.
Проверьте, права у репозитария (который создавался программой) и папки (которую вы создали). Может программа не может получить доступ к папке и валит авторизацию.
На днях восстановлю свой сервер.
А на кого права-то выдавать?
Я делал так
chown admin /opt/share/svn/repos/project1
ведь спец. демона нет.
И вот что интересно, может ли не быть прав на репозиторий или внутренние папки, если под mev все видно и доступно? Ведь только под test и test2 нет доступа….
если не сложно, выложите результат
ls -all /opt/share/svn/repos/
и
ls -all /opt/share/svn
Ага, вот:
[admin@wl500gp root]$ ls -all /opt/share/svn/repos/
total 36
drwxr-xr-x 7 admin root 4096 Apr 5 13:19 .
drwxr-xr-x 3 admin root 4096 Apr 5 13:08 ..
-rw-r–r– 1 admin root 229 Apr 5 13:08 README.txt
drwxr-xr-x 2 admin root 4096 Apr 5 13:12 conf
drwxr-sr-x 6 admin root 4096 Apr 5 13:08 db
-r–r–r– 1 admin root 2 Apr 5 13:08 format
drwxr-xr-x 2 admin root 4096 Apr 5 13:08 hooks
drwxr-xr-x 2 admin root 4096 Apr 5 13:08 locks
drwxr-xr-x 2 admin root 4096 Apr 5 13:19 project1
[admin@wl500gp root]$ ls -all /opt/share/svn
total 12
drwxr-xr-x 3 admin root 4096 Apr 5 13:08 .
drwxr-xr-x 21 admin root 4096 Apr 3 21:50 ..
drwxr-xr-x 7 admin root 4096 Apr 5 13:19 repos
На данный момент дельного совета дать не могу. Надо добраться до роутера и провести анализ.
Как вариант попробуйте создать папку project1 с помощью клиента, подключившись под админом.
Как доберусь до роутера, переработаю мануал с учетом возникших вопросов.
Снес все и попробовал снова.
):
Заработало. Не понял причины, но хочу описать непонятки и проблемы, с которыми столкнулся (для таких же чайников как и я
1. mkdir /opt/share/svn/repos/project1 делать не надо. project1 создастся админом в TortoiseSVN
2. при правке svnserve.conf в самой первой строкой должно быть [general]. (Чайникам трудно въехать в это сразу)
3. при правке authz случайно попал в текст тег
4. вызывать соответственно
для группы admins: svn://192.168.1.1/
для группы groupofproject1: svn://192.168.1.1/project1
5. Сначала все сделайт по инструкции, а уж потом переименовывайте названия групп, юзеров, проектов. На моей практике это пришлось делать 2 раза
6. Спасибо mev и за инструкцию и за то, что поддерживаешь ее!
Так и думал, что сервер не может понять к какой папке обратиться, т.к. у него в описании репозитария эта папка не значится.
В очередной раз убеждаюсь в действенности метода «попробуй сделать заново».
Спасибо за непонятки. Надо будет их внести.
Спасибо большое. Очень хорошо и понятно для новичков. Все заработало сразу без проблем.
Пожалуйста. Сам был новичком. Долго мучился, собирая и тестируя куски кода с разных ресурсов.
Замечание!
А что если у вас несколько проектов? Так и будете их складывать в один репозиторий?
Итак в п.2 надо немного исправить:
2. Создаем директорию для репозитария и сам репозитарий
mkdir /opt/share/svn/repos
директория, в которой будут лежать все репозитории логика такова – одиин проект=один репозиторий
после чего можно создавать репозитории для проектов:
svnadmin create /opt/share/svn/repos/project1
svnadmin create /opt/share/svn/repos/project2
svnadmin create /opt/share/svn/repos/project3
svnadmin create /opt/share/svn/repos/projectN
таким образом вы получите N репозиториев нумерация ревизий в кажом своя(естественно)
ну а дальше конфигурируете каждый репозиторий.