суббота, 7 июня 2008 г.

Создание SVN репозитория

Итак, я решил создать SVN репозиторий, для одного проекта, который мы неоднократно обсуждали с одним моим другом. И я даже уже начал писать его части.
Раньше я неоднократно порывался создать единый репозиторий для всех проектов, но натыкался на некоторые неудобства работы с таким глобальным репозиторием. Поэтому я решил создавать для каждого проекта свой репозиторий. Все репозитории я решил складывать в одну директорию /mnt/store2/svn. В первую очередь необходимо создать каталог для моего проекта, и создать репозиторий в нём:
 mkdir /mnt/store2/svn/MahJong-Night  
 svnadmin create /mnt/store2/svn/MahJong-Night  
В принципе репозиторий создан, и можно импортировать в него код, но пока что код можно импортировать только локально указывая в качестве имени репозитория file:///mnt/store2/svn/MahJong-Night. Чтобы иметь возможность работать с этим репозиторием по сети необходимо запустить SVN сервер. Это делается следующим образом:
 svnserve -d -T -r /mnt/store3/svn  
Ключ -d необходим для запуска сервера в режиме демона, -T для обработки запроса в отдельном потоке вместо того, чтобы создавать отдельные процессы, а -r для того, чтобы при работе по сети были доступны только репозитории расположенные в указанной директории.
После того, как сервер запущен необходимо изменить настройки доступа к репозиторию по сети. Они храятся в файле conf/svnserve.conf в директории репозитория (соответственно полный путь будет /mnt/store2/svn/MahJong-Night/conf/svnserve.conf). Так как я хочу обеспечить аноимный доступ на чтение и доступ на дапись только для авторизованных пользователей, то содержимое этого файла должно быть следующим:
 [general]  
 anon-access = read  
 auth-access = write  
 password-db = passwd  
 realm = MahJong-Night project repository.  
Так же необходимо подредактировать файл passwd в той же директории, приведя его примерно к следующему виду:
 [users]  
 vestnik = *******  
Думаю, что комментарии к содержимому этих файлов излишни. Да, пароль здесь храниться в явном виде, а это наводит меня на мысль о настроке доступа через ssh+svn с авторизацией по ключам. Но это как-нибудь в другой раз.
Теперь можно импотировать написанный код. Переходим в директорию с кодом и выполняем:
 svn import mahjong-night svn://localhost/MahJong-Night --username vestnik --password *******