Subversion

Материал из Xgu.ru

Перейти к: навигация, поиск


Subversion — централизованная система контроля версий. По замыслу разработчиков со временем должна была стать заменой CVS. Это отражено в названии проекта, которое является игрой слов: с одной стороны это подверсия, а с другой — ниспровержение.

Subversion — свободное программное обеспечение; распространяется по лицензии Apache.

Содержание

[править] Вопросы и ответы

[править] Как быстро поднять Subversion-сервер?

  1. Создать конфигурационный файл.
  2. Создать репозиторий.
  3. Запустить сервер.
# vi /svn/conf/svnserve.conf
[general]
password-db = userfile
realm = example realm

Список пользователей:

# vi /svn/conf/userfile
[users]
user1 = user1password
user2 = user2password

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

# svnadmin create /svn/repos/rep1
# svnserve -d --config-file=/svn/conf -r /svn/repos

Подробнее: [1], [2].

[править] А как поднять Subversion, доступный через web-сервер Apache?

  1. Собрать Apache
  2. Собрать Subversion c модулем для Apache
  3. Настроить Apache на использование модуля Subversion
  4. Произвести настройку:

Apache:

 ./configure --enable-dav --enable-so --enable-maintainer-mode

Subversion:

 sh autogen.sh
 ./configure --with-apxs=/...../bin/apxs

В конфигурационном файле Apache:

<Location /svn>
  DAV svn
  SVNPath /home/svn

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

Создать файл паролей:

htpasswd2 -cm /etc/apache2/dav_svn.passwd bob

Создать репозиторий:

sudo svnadmin create /home/svn

Подробнее:

[править] Как частично получить дерево проекта из репозитория (subversion partial checkout)?

Например вот так:

svn checkout --non-recursive http://svnserver/trunk/ proj
svn update trunk/foo
svn update trunk/bar
svn update trunk/baz

Подробнее: [3], [4]

[править] Как поставить бит исполнения на файл в репозитории?

chmod +x не работает, нужно что-то посущественнее.

Правильно так:

   $ svn propset svn:executable true file

[править] Как получить доступ к удалённой ветке Subversion?

Надо знать номер ревизии или время, когда ветка ещё существовала и дальше, например, так:

$ svn co http://server/repo/branch@revision

или, если известно время:

$ svn co http://server/repo/branch@"{2011-07-21 10:45:00}"

Вытащить ветку из пепла можно с помощью svn cp [5]:

$ svn cp http://server/repo/branch@revision svn co http://server/repo/branch_restored
Источник — «http://xgu.ru/wiki/Subversion»