SVN - SubVersion: различия между версиями
ALEX (обсуждение | вклад) |
ALEX (обсуждение | вклад) |
||
Строка 104: | Строка 104: | ||
{{Root|/etc/init.d/apache2 restart}} | {{Root|/etc/init.d/apache2 restart}} | ||
==Перенос репозитария на другую машину== | |||
Теперь рассмотрим вариант, когда нам надо переустановить систему, или же сделать бэкап репозитария, а потом в случае утери данных восстановить его, ну или другие вариации на ту же тему. | |||
Соответственно для создания дампа всего репозитария выполняем команду: | |||
{{root|svnadmin dump /var/svn/coding/ > /home/alex/repository-backup.dmp}} | |||
где первый путь это путь к самому репозитарию, а второй путь - это путь, куда сохранится файл дампа со всеми ревизиями, которые вы делали. Соответственно, если файл получился большой то его полезно упаковать в архив вашим любимым архиватором. | |||
Затем, при восстановлении репозитария, мы должны выполнить следующую команду: | |||
{{root|svnadmin load repository-name < /path/to/repository-name.dmp}} | |||
При условии, что у анс существует репозитарий с именем '''repository-name''', а так же мы находимся в той папке, где он непосредственно находится. Например: | |||
{{root|svnadmin load /var/svn/coding/ < /home/alex/repository-backup.dmp}} | |||
Стоит отметить, что дынный метод очень кросплатформенный в отличие от простого копирования файлов или замена их из архива. Таким образом можено перенести репозитарий из Linux в Windows. | |||
==Ссылки== | ==Ссылки== | ||
Строка 110: | Строка 123: | ||
# [http://svnbook.red-bean.com/nightly/ru/ более подробно об SVN читаем вот тут] | # [http://svnbook.red-bean.com/nightly/ru/ более подробно об SVN читаем вот тут] | ||
# [http://en.gentoo-wiki.com/wiki/Subversion/Basics SVN Basics] - Gentoo-Wiki | # [http://en.gentoo-wiki.com/wiki/Subversion/Basics SVN Basics] - Gentoo-Wiki | ||
# [http://www.digitalmediaminute.com/article/2251/how-to-move-a-subversion-repository Перенос] репозитария с одного места в другое. | |||
===BackUPs=== | ===BackUPs=== |
Версия 07:23, 21 июля 2010
Subversion - Sub (под-) + version (версия). В то же время, subversion — свержение. Cвободная централизованная система управления версиями.
Subversion разработана специально для замены устаревшей системы CVS, распространённой открытой системы управления версиями. Subversion обладает всеми основными функциями CVS (хотя некоторые из них выполняет другими способами) и свободна от ряда её недостатков.
Установка в Gentoo
Первым делом сверяем USE флаги
Use Flags: apache2 berkdb nls python -bash-completion -debug -doc -emacs -extras -java -nowebdav -perl -ruby -svnserve -vim-syntax (?)
, а потом как всегда выполняем:
Таким образом СВН ставится в виде модуля апача.
Затем делаем автоконфигурацию СВН
Конфигурирование
Далее в файле конфигурации апача /etc/conf.d/apache2 надо чтобы было прописано
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PHP5 -D SVN -D SVN_AUTHZ -D DAV -D DAV_FS"
Другие опции добавились после установки php. Так что это всего лишь ориентир на то, что должно быть прописанно в файле. Это те опции, с которыми будет запускаться наш apache.
Настройка доступа к SVN по SSL
Для возможности использования СВН только по протоколу https необходимо сделать следующее:
Переименовать файл 47_mod_dav_svn.conf в 47_mod_dav_svn.ssl-conf.
Далее в файл 40_mod_ssl.conf добавляем в конец следующее:
Code: Строки кода для вставки в файл |
Include /etc/apache2/modules.d/*.ssl-conf BrowserMatch "SVN" redirect-carefully |
и получаем вот такое:
## Semaphore: # Configure the path to the mutual exclusion semaphore the SSL engine uses # internally for inter-process synchronization. SSLMutex file:/var/run/ssl_mutex </IfModule> Include /etc/apache2/modules.d/*.ssl-conf BrowserMatch "SVN" redirect-carefully </IfDefine> # vim: ts=4 filetype=apache
Первая строка добавляет возможность при использовании SSl подгружать файл с конфигурациями СВН (мы его переименовали в 47_mod_dav_svn.ssl-conf). А вторая строка нужная т.к. мы ужесточаем авторизацию ТОЛЬКО по SSL.
Создание репозитария
Для создания репозитария выполняем: Поправить /etc/apache2/modules.d/47_mod_dav_svn.ssl-conf (переименованный нами ранее файл), а именно добавить в него вот такой кусочек кода (по аналогии)
<Location /svn/16cla> DAV svn SVNPath /var/svn/16cla AuthType Basic AuthName "16CLA repository" AuthUserFile /var/svn/16cla/conf/svnpasswd #<LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user #</LimitExcept> SSLRequireSSL </Location>
Где закомментированные строки разрешают читать СВН анонимам, но писать туда можно только после прохождения авторизации по SSL, а 16CLA - это пример названия репозитария.
Далее командой
создаём новый репозитарий. Она создаёт следующие пути и файлы:
conf/ dav/ db/ format hooks/ locks/ README.txt
- Потом создаём файл /var/svn/srach/conf/svnpasswd с содержимыми паролей и логинов (sha)
- Можно воспользоваться ссылкой или утилитой htpasswd.exe (не уверен что правда она ша держит) – как пример строка из этого файла alex:{SHA}YMbSd6i9gd5/3eGSAb+cWKPfCPQ=
- Даём права на запись апачу chown -R apache:apache /var/svn/16cla/
- Далее рестартим апач
- Конектиться к репозитарию можно по адресу http://host.domain:port/svn/repos
Как пример https://srach.no-ip.org/svn/16cla/.
Путь к SVN выглядит как: /usr/bin.
Линковка репозитария и веб директории
При разработке веб приложений иногда полезно синхронизировать сожержимое репозитария и веб директории. Для этого выполняем:
Создаём скрипт в файл /var/svn/srach/hooks/post-commit. И добавляем в него следующее:
#!/bin/sh svn --username user --password parol --force export http://16cla.no-ip.org/svn/16cla/ /var/www/16cla/htdocs/" > post-commit
Пример приведён для репозитария 16cla и одноимённой веб директории.
Далее даём права на этот файл на выполнение
Рестарт Apache2
Т.к. SVN стоит в виде модуля апача, то для вступления в силу каких-либо изменений необходимо рестартить апач.
Перенос репозитария на другую машину
Теперь рассмотрим вариант, когда нам надо переустановить систему, или же сделать бэкап репозитария, а потом в случае утери данных восстановить его, ну или другие вариации на ту же тему.
Соответственно для создания дампа всего репозитария выполняем команду:
где первый путь это путь к самому репозитарию, а второй путь - это путь, куда сохранится файл дампа со всеми ревизиями, которые вы делали. Соответственно, если файл получился большой то его полезно упаковать в архив вашим любимым архиватором.
Затем, при восстановлении репозитария, мы должны выполнить следующую команду:
При условии, что у анс существует репозитарий с именем repository-name, а так же мы находимся в той папке, где он непосредственно находится. Например:
Стоит отметить, что дынный метод очень кросплатформенный в отличие от простого копирования файлов или замена их из архива. Таким образом можено перенести репозитарий из Linux в Windows.
Ссылки
- Официальный сайт Subversion
- The Risks of Distributed Version Control Бен Коллинз-Сассман
- более подробно об SVN читаем вот тут
- SVN Basics - Gentoo-Wiki
- Перенос репозитария с одного места в другое.
BackUPs
- Gentoo Wiki - HOWTO Apache2 web server with subversion SVN and DAV