Блог mev'a

все, что я хотел сказать

Заинтересовавшись использованием 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%

Связанные записи

Распечатать запись  Распечатать запись
Получить PDF
Добавить в Facebook Добавить в Twitter Добавить в Google-Buzz Добавить в Яндекс-закладки Добавить в Вконтакте

отели египта . английский язык харьков

20 комментариев

  1. mev пишет 23 апреля 2008 6:33 P

    у меня усе пашет

  2. Барада пишет 20 июня 2008 7:56 P

    а у меня иногда подвисает при коннекте
    клиент как будто ждёт чегото
    через пять минут сдвигается и начинает работать
    если сделать по svn+ssh то всё ок

  3. alien пишет 14 октября 2008 12:12 P

    Спасибо большое. то-что искал.

  4. Василий пишет 26 декабря 2008 1:30 P

    Большое спасибо ! С начала ставил как описывалось тут http://wl500g.info/showthread.php?t=12371&highlight=svn , в принципе все настроил только не все понял, что настроил, теперь все стало яснее. Осталось уговорить что бы запускалось после при запуске…

  5. Василий пишет 6 января 2009 12:43 P

    хм … все работает, но есть одно но. Был один проект скажем project1 и в нем было например 10 ревизий, то когда создается второй проект project2 то он будет начинаться с 11 ревизии. Т.о. получается что имеется один репозитарий просто в нем разные папки сохраняются, как по мне то не совсем удобно для нескольких проектов

  6. Алексей пишет 13 марта 2009 4:58 P

    Не работает. Пишет
    svn: No repositary in svn://192.168.1.1

  7. mev пишет 13 марта 2009 5:11 P

    Создайте репозитарий – заработает.

  8. Юрий пишет 4 апреля 2009 8:17 P

    Для начала прямо по инструкции без отсебятины сделал.
    Работает только под mev – полный доступ ко всему репозиторию. А вот под test и test2 получаю «Authorization failed»
    В чем проблема?

  9. mev пишет 4 апреля 2009 8:28 P

    А куда ваши test и test2 пытаются подключиться? К корню или к внутренней директории? Если второе, то создана ли сама директория?

  10. Юрий пишет 4 апреля 2009 10:00 P

    Подключение делаю так:
    svn://192.168.1.1/svn

    Папку project1 создавал так
    mkdir /opt/share/svn/repos/project1
    и пробовал так
    mkdir /opt/share/svn/project1
    но их при подключении не видит даже админ.
    админ видит: /svn/repos и все, что туда через TortoiseSVN сам же и залил.
    Если логин и/или пароль введены неправильно, то сообщение «Authorization failed» не появляется. Просто 3 раза запрашивается и вылетает.
    А вот если правильно, но не админ (видящий корень), то тогда вылетает сообщение.

  11. mev пишет 4 апреля 2009 11:10 P

    mkdir /opt/share/svn/project1 – это что? Если второй репозитарий, то создается через svnadmin.
    Проверьте, права у репозитария (который создавался программой) и папки (которую вы создали). Может программа не может получить доступ к папке и валит авторизацию.
    На днях восстановлю свой сервер.

  12. Юрий пишет 5 апреля 2009 12:00 P

    А на кого права-то выдавать?
    Я делал так
    chown admin /opt/share/svn/repos/project1
    ведь спец. демона нет.
    И вот что интересно, может ли не быть прав на репозиторий или внутренние папки, если под mev все видно и доступно? Ведь только под test и test2 нет доступа….

  13. mev пишет 5 апреля 2009 12:20 P

    если не сложно, выложите результат
    ls -all /opt/share/svn/repos/
    и
    ls -all /opt/share/svn

  14. Юрий пишет 5 апреля 2009 1:31 P

    Ага, вот:
    [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

  15. mev пишет 5 апреля 2009 1:59 P

    На данный момент дельного совета дать не могу. Надо добраться до роутера и провести анализ.
    Как вариант попробуйте создать папку project1 с помощью клиента, подключившись под админом.
    Как доберусь до роутера, переработаю мануал с учетом возникших вопросов.

  16. Юрий пишет 5 апреля 2009 5:41 P

    Снес все и попробовал снова.
    Заработало. Не понял причины, но хочу описать непонятки и проблемы, с которыми столкнулся (для таких же чайников как и я ;-) ):
    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 и за инструкцию и за то, что поддерживаешь ее!

  17. mev пишет 5 апреля 2009 5:48 P

    Так и думал, что сервер не может понять к какой папке обратиться, т.к. у него в описании репозитария эта папка не значится.
    В очередной раз убеждаюсь в действенности метода «попробуй сделать заново». :)
    Спасибо за непонятки. Надо будет их внести.

  18. mix пишет 14 апреля 2009 12:36 P

    Спасибо большое. Очень хорошо и понятно для новичков. Все заработало сразу без проблем.

  19. mev пишет 14 апреля 2009 12:45 P

    Пожалуйста. Сам был новичком. Долго мучился, собирая и тестируя куски кода с разных ресурсов.

  20. navcool пишет 7 февраля 2010 1:37 P

    Замечание!
    А что если у вас несколько проектов? Так и будете их складывать в один репозиторий?
    Итак в п.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 репозиториев нумерация ревизий в кажом своя(естественно)
    ну а дальше конфигурируете каждый репозиторий.

Оставить комментарий или два