SVN - SubVersion: различия между версиями
ALEX (обсуждение | вклад) |
ALEX (обсуждение | вклад) |
||
(не показано 29 промежуточных версий этого же участника) | |||
Строка 5: | Строка 5: | ||
==Установка в Gentoo== | ==Установка в Gentoo== | ||
Первым делом сверяем USE флаги | Первым делом сверяем USE флаги | ||
{{USEFlag|extended=yes| {{EnableFlag|apache2}} {{EnableFlag|berkdb}} {{EnableFlag|nls}} {{EnableFlag|python}} {{ | {{Note|Если каких-то флагов не хватает, то можно выполнить команду {{root|echo "dev-vcs/subversion use-flag" >> /etc/portage/package.use}}}} | ||
{{USEFlag|extended=yes| {{EnableFlag|apache2}} {{EnableFlag|berkdb}} {{EnableFlag|nls}} {{EnableFlag|python}} {{EnableFlag|bash-completion}} {{EnableFlag|webdav-neon}} {{DisableFlag|debug}} {{DisableFlag|doc}} {{DisableFlag|emacs}} {{DisableFlag|extras}} {{DisableFlag|java}} {{DisableFlag|ctypes-python}} {{DisableFlag|perl}} {{DisableFlag|gnome-keyring}} {{DisableFlag|kde}} {{DisableFlag|sasl}} {{DisableFlag|test}} {{DisableFlag|webdav-serf}} {{DisableFlag|ruby}} {{DisableFlag|dso}} {{DisableFlag|vim-syntax}}}} | |||
, а потом как всегда выполняем: | , а потом как всегда выполняем: | ||
Строка 13: | Строка 15: | ||
{{Root|emerge subversion}} | {{Root|emerge subversion}} | ||
Таким образом | Таким образом мы установили SVN. Важно отметить, что флаг '''apache2''' был выбран для того, чтобы была возможность загрузить модуль SVN в apache web server и использовать этот веб сервер для доступа к репозитарию по протоколу '''httpS'''. | ||
Затем делаем автоконфигурацию | Затем делаем автоконфигурацию SVN | ||
{{Root|emerge --config}} | {{Root|emerge --config dev-vcs/subversion}} | ||
==Конфигурирование== | После чего система предложит нам руками создать пользователя группу '''svnusers''' и пользователя '''svn''' c основной группой '''svnusers''' и домашней папкой {{path|/var/svn}}. | ||
{{root|groupadd svnusers}} | |||
{{root|useradd -m -g svnusers -s /bin/bash -d /var/svn svn}} | |||
==Конфигурирование для работы с apache== | |||
Далее в файле конфигурации апача {{Path|/etc/conf.d/apache2}} надо чтобы было прописано | Далее в файле конфигурации апача {{Path|/etc/conf.d/apache2}} надо чтобы было прописано | ||
{{File|/etc/conf.d/apache2|< | {{File|/etc/conf.d/apache2| | ||
Другие опции добавились после установки '''php'''. Так что это всего лишь ориентир на то, что должно быть прописанно в файле. | <syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
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" | |||
</syntaxhighlight> | |||
}} | |||
Важно обратить внимание на опции {{codeline|-D SVN -D SVN_AUTHZ -D DAV}} где | |||
'''SVN''' и '''DAV''' нужны для доступа к репозитарию через веб сервер, а '''SVN_AUTHZ''' позволяет более гибко настроить права пользователей при работе с репозитарием (кому писать, кому читать и т.д.). | |||
Другие опции апача добавились после установки '''php''' и т. д.. Так что это всего лишь ориентир на то, что должно быть прописанно в файле. Это те опции, с которыми будет запускаться наш apache. | |||
===Настройка доступа к SVN по SSL=== | ===Настройка доступа к SVN по SSL=== | ||
Строка 30: | Строка 43: | ||
Далее в файл {{Path|40_mod_ssl.conf}} добавляем в конец следующее: | Далее в файл {{Path|40_mod_ssl.conf}} добавляем в конец следующее: | ||
{{Code|Строки кода для вставки в файл|< | {{Code|Строки кода для вставки в файл|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
Include /etc/apache2/modules.d/*.ssl-conf | Include /etc/apache2/modules.d/*.ssl-conf | ||
BrowserMatch "SVN" redirect-carefully | BrowserMatch "SVN" redirect-carefully | ||
</ | </syntaxhighlight>}} | ||
и получаем вот такое: | и получаем вот такое: | ||
{{File|40_mod_ssl.conf|< | {{File|40_mod_ssl.conf|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
SSLMutex file:/var/run/ssl_mutex | SSLMutex file:/var/run/ssl_mutex | ||
Include /etc/apache2/modules.d/*.ssl-conf | Include /etc/apache2/modules.d/*.ssl-conf | ||
BrowserMatch "SVN" redirect-carefully | BrowserMatch "SVN" redirect-carefully | ||
</IfDefine> | </IfDefine> | ||
# vim: ts=4 filetype=apache | # vim: ts=4 filetype=apache | ||
</ | </syntaxhighlight>}} | ||
Строка 51: | Строка 61: | ||
==Создание репозитария== | ==Создание репозитария== | ||
Для создания репозитария | Для создания репозитария сперва нужно дать о нём знать веб серверу apache и обозначить основные параметры работы с ним, а потом собственно создать сам этот репозитарий. | ||
Для это сперва нам нужноп поправить {{Path|/etc/apache2/modules.d/47_mod_dav_svn.ssl-conf}} (переименованный нами ранее файл), а именно добавить в него вот такой кусочек кода (по аналогии) | |||
{{File|/etc/apache2/modules.d/47_mod_dav_svn.ssl-conf|< | {{File|/etc/apache2/modules.d/47_mod_dav_svn.ssl-conf|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
<Location /svn/16cla> | <Location /svn/16cla> | ||
DAV svn | DAV svn | ||
Строка 64: | Строка 74: | ||
#</LimitExcept> | #</LimitExcept> | ||
SSLRequireSSL | SSLRequireSSL | ||
</Location></ | </Location></syntaxhighlight>}} | ||
Где закомментированные строки разрешают читать СВН анонимам, но писать туда можно только после прохождения авторизации по SSL, а '''16CLA''' - это пример названия репозитария. | Где закомментированные строки разрешают читать СВН анонимам, но писать туда можно только после прохождения авторизации по SSL, а '''16CLA''' - это пример названия репозитария. | ||
Далее командой | Далее командой | ||
{{Root|svnadmin create /var/svn/16cla}} создаём новый репозитарий | {{Root|svnadmin create /var/svn/16cla}} создаём новый репозитарий. Она создаёт следующие пути и файлы: | ||
{{Codeline|conf/ dav/ db/ format hooks/ locks/ README.txt}} | {{Codeline|conf/ dav/ db/ format hooks/ locks/ README.txt}} | ||
* Потом создаём файл {{Path|/var/svn/srach/conf/svnpasswd}} с содержимыми паролей и логинов ('''sha''') | |||
:: Можно воспользоваться [http://www.askapache.com/online-tools/htpasswd-generator/ ''ссылкой''] или утилитой '''htpasswd.exe''' (не уверен что правда она ша держит) – как пример строка из этого файла {{Codeline|<nowiki>alex:{SHA}YMbSd6i9gd5/3eGSAb+cWKPfCPQ=</nowiki>}} | :: Можно воспользоваться [http://www.askapache.com/online-tools/htpasswd-generator/ ''ссылкой''] или утилитой '''htpasswd.exe''' (не уверен что правда она ша держит) – как пример строка из этого файла {{Codeline|<nowiki>alex:{SHA}YMbSd6i9gd5/3eGSAb+cWKPfCPQ=</nowiki>}} | ||
{{note|Можно дать следующую команду {{root|htpasswd -c -s /var/svn/ibm/conf/svnpasswd andy}}, которая создаст файл '''svnpasswd''' (опция {{Codeline|-с}}), с алгоритмом SHA1 (опция {{Codeline|-s}}) и занесёт в него имя '''andy'''. Пароль программа попросит ввести в консоль и повторить.}} | |||
* Даём права на запись апачу {{Root|chown -R apache:apache /var/svn/16cla/}} | |||
* Далее рестартим апач | |||
Как пример {{Codeline|<nowiki>https://srach.no-ip.org/svn/16cla/</nowiki>}} | * Конектиться к репозитарию можно по адресу {{Codeline|<nowiki>https://host.domain:port/svn/repos</nowiki>}} | ||
Как пример {{Codeline|<nowiki>https://srach.no-ip.org/svn/16cla/</nowiki>}}. | |||
Путь к SVN выглядит как: {{Path|/usr/bin}}. | |||
==Линковка репозитария и веб директории== | ==Линковка репозитария и веб директории== | ||
Строка 86: | Строка 99: | ||
{{Root|nano -w /var/svn/srach/hooks/post-commit}} | {{Root|nano -w /var/svn/srach/hooks/post-commit}} | ||
{{File|/var/svn/srach/hooks/post-commit|< | {{File|/var/svn/srach/hooks/post-commit|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
#!/bin/sh | #!/bin/sh | ||
svn --username user --password parol --force export http://donik.org/svn/16cla/ /var/www/16cla/htdocs/ | |||
svn --username user --password parol --force export http:// | </syntaxhighlight>}} | ||
</ | |||
Пример приведён для репозитария '''16cla''' и одноимённой веб директории. | Пример приведён для репозитария '''16cla''' и одноимённой веб директории. | ||
Строка 97: | Строка 109: | ||
{{Root|chmod 755 post-commit}} | {{Root|chmod 755 post-commit}} | ||
==Полная линковка репозитария и веб директории с удалением== | |||
Предыдущий вариант делал после комита принудительный экспорт данных. Это вполне рабочая схема, когда ведуться работы лишь по модификации файлов и их добавлению. Если требуется что-то удалить, то могут возникнуть проблемы. Удалять что-то с веб сервера надо будет руками. | |||
Однако, можно полностью провести синхронизацию веб директории с репозитарием. Для того сперва нужно в репозитарии создать полную структуру виртуального хоста со всеми папками. У меня это выглядит примерно так: | |||
<pre> | |||
total 20 | |||
drwxr-xr-x 2 alex apache 4096 Feb 17 2009 cgi-bin | |||
drwxr-xr-x 2 alex apache 4096 Feb 17 2009 error | |||
drwxr-xr-x 6 alex apache 4096 Jul 26 2009 htdocs | |||
drwxr-xr-x 2 alex apache 4096 Feb 17 2009 htpasswd | |||
drwxr-xr-x 2 alex apache 4096 Feb 17 2009 icons | |||
</pre> | |||
Допустим всё это имеет отношение к виртуальному хосту {{path|/var/wwww/stat}}. | |||
Теперь заходим в {{path|/var/wwww/stat}} | |||
{{root|cd /var/wwww/stat}} | |||
и там выполняем чекаут: | |||
{{root|svn checkout svn://donik.org:3690/STAT_REPO ./}} | |||
После этого надо дать права юзеру, под которым SVN сможет редактировать репозитарий в этой папке: | |||
{{root|chown -R apache:apache /var/www/stat/}} | |||
Теперь добавляем Hook. | |||
Создаём скрипт в файл {{Path|/var/svn/stat/hooks/post-commit}}. И добавляем в него следующее: | |||
{{Root|nano -w /var/svn/stat/hooks/post-commit}} | |||
{{File|/var/svn/stat/hooks/post-commit|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
#!/bin/sh | |||
cd /var/www/stat && svn update --non-interactive --username 'USER_NAME' --password 'PAROL' | |||
</syntaxhighlight>}} | |||
Пример приведён для репозитария '''stat''' и одноимённой веб директории. | |||
Далее даём права на этот файл хука на выполнение | |||
{{Root|chmod 755 post-commit}} | |||
Теперь заносим стандартные папки apacha виртуального хоста в ревизию 1, где мы только что делали чекаут. | |||
{{root|<nowiki>svn status |grep '\?' |awk '{print $2}'| xargs svn add</nowiki>}} | |||
{{note|Строка добавляет все файлы рекурсивно, что не учтены ещё в репозитарии. Работает только при отсутствии пробелов}} | |||
Можно воспользоваться вот такой командой: | |||
{{root|svn add * --force}} | |||
Далее комитим добавленые в репозитарый новые файлы. | |||
{{root|svn commit -m "added basic dirs and files"}} | |||
==Рестарт Apache2== | ==Рестарт Apache2== | ||
Строка 102: | Строка 165: | ||
{{Root|/etc/init.d/apache2 restart}} | {{Root|/etc/init.d/apache2 restart}} | ||
==Использование SVN как standalone сервиса== | |||
В начале при необходимости можно подкорректирвоать {{path|/etc/conf.d/svnserve}} | |||
Далее стартовать сервер | |||
{{root|/etc/init.d/svnserve start}} | |||
После чего добавить его в автозапуск | |||
{{root|rc-update add svnserve default}} | |||
Для доступа к нашему серверу по протоколу {{path|svn://}} нужно настроить права на чтение и запись. Выполнить это можно вот тут | |||
{{root|nano /var/svn/SVN_REPO/conf/svnserve.conf}} | |||
В этом файле правим строки, относящиеся к анонимному и авторизованному доступу | |||
{{File|/var/svn/SVN_REPO/conf/svnserve.conf|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
anon-access = none | |||
auth-access = write | |||
password-db = passwd | |||
</syntaxhighlight>}} | |||
Теперь добавляем логин и пароль того пользователя с правами которого будем подключаться к репозитарию. | |||
{{root|nano /var/svn/SVN_REPO/conf/passwd}} | |||
{{File|/var/svn/SVN_REPO/conf/passwd|<syntaxhighlight lang="bash" line start="100" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
[users] | |||
# harry = harryssecret | |||
username = password | |||
</syntaxhighlight>}} | |||
Для доступа к репозитарию нужно будет использовать команду: | |||
{{path|<nowiki>svn://SERVER_URL:3690/SVN_PROJECT</nowiki>}} | |||
По умолчанию порт '''3690''' подставлять не нужно, так как он стандартный в данном случае. | |||
==Перенос репозитария на другую машину== | |||
Теперь рассмотрим вариант, когда нам надо переустановить систему, или же сделать бэкап репозитария, а потом в случае утери данных восстановить его, ну или другие вариации на ту же тему. | |||
Соответственно для создания дампа всего репозитария выполняем команду: | |||
{{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. | |||
==Удаление SVN репозитария== | |||
Для удаления, перемещения или копирования репозитария достаточно просто применить эти операции к файлам и папкам, где репозитарий лежит. | |||
Например для удаления всего репозитария надо ввести команду: | |||
{{root|rm -r /var/svn/coding/}} | |||
И не забываем подчистить конфиг от нашего описания репозитария: | |||
{{path| /etc/apache2/modules.d/47_mod_dav_svn.ssl-conf}} | |||
==Ссылки== | ==Ссылки== | ||
Строка 108: | Строка 225: | ||
# [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 Перенос] репозитария с одного места в другое. | |||
# [http://httpd.apache.org/docs/2.2/programs/htpasswd.html htpasswd] | |||
# [http://blog.sulin.pro/2009/12/gentoo-subversion-svn-server-trac.html gentoo] subversion server blog article | |||
# [http://www.commandlinefu.com/commands/view/153/add-all-unversioned-files-to-svn Добавление] всех unversioned файлов в репозитарий, чтобы потом сделать комит на них | |||
===BackUPs=== | ===BackUPs=== | ||
# Gentoo Wiki - [[Медиа:HOWTO_Apache2_with_subversion_SVN_and_DAV.pdf|HOWTO Apache2 web server with subversion SVN and DAV]] | # Gentoo Wiki - [[Медиа:HOWTO_Apache2_with_subversion_SVN_and_DAV.pdf|HOWTO Apache2 web server with subversion SVN and DAV]] | ||
# Gentoo Wiki - [[Медиа:Gentoo_Wiki_Archives-Subversion_Basics.pdf|Gentoo Wiki Archives Subversion Basics]] | |||
[[Category:Index]] | [[Category:Index]] | ||
[[Category:Linux]] | [[Category:Linux]] |
Текущая версия на 10:48, 17 мая 2021
Subversion - Sub (под-) + version (версия). В то же время, subversion — свержение. Cвободная централизованная система управления версиями.
Subversion разработана специально для замены устаревшей системы CVS, распространённой открытой системы управления версиями. Subversion обладает всеми основными функциями CVS (хотя некоторые из них выполняет другими способами) и свободна от ряда её недостатков.
Установка в Gentoo
Первым делом сверяем USE флаги
Use Flags: apache2 berkdb nls python bash-completion webdav-neon -debug -doc -emacs -extras -java -ctypes-python -perl -gnome-keyring -kde -sasl -test -webdav-serf -ruby -dso -vim-syntax (?)
, а потом как всегда выполняем:
Таким образом мы установили SVN. Важно отметить, что флаг apache2 был выбран для того, чтобы была возможность загрузить модуль SVN в apache web server и использовать этот веб сервер для доступа к репозитарию по протоколу httpS.
Затем делаем автоконфигурацию SVN
После чего система предложит нам руками создать пользователя группу svnusers и пользователя svn c основной группой svnusers и домашней папкой /var/svn.
Конфигурирование для работы с apache
Далее в файле конфигурации апача /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"
Важно обратить внимание на опции -D SVN -D SVN_AUTHZ -D DAV где SVN и DAV нужны для доступа к репозитарию через веб сервер, а SVN_AUTHZ позволяет более гибко настроить права пользователей при работе с репозитарием (кому писать, кому читать и т.д.). Другие опции апача добавились после установки 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
|
и получаем вот такое:
SSLMutex file:/var/run/ssl_mutex
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.
Создание репозитария
Для создания репозитария сперва нужно дать о нём знать веб серверу apache и обозначить основные параметры работы с ним, а потом собственно создать сам этот репозитарий. Для это сперва нам нужноп поправить /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/
- Далее рестартим апач
- Конектиться к репозитарию можно по адресу https://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://donik.org/svn/16cla/ /var/www/16cla/htdocs/
Пример приведён для репозитария 16cla и одноимённой веб директории.
Далее даём права на этот файл на выполнение
Полная линковка репозитария и веб директории с удалением
Предыдущий вариант делал после комита принудительный экспорт данных. Это вполне рабочая схема, когда ведуться работы лишь по модификации файлов и их добавлению. Если требуется что-то удалить, то могут возникнуть проблемы. Удалять что-то с веб сервера надо будет руками.
Однако, можно полностью провести синхронизацию веб директории с репозитарием. Для того сперва нужно в репозитарии создать полную структуру виртуального хоста со всеми папками. У меня это выглядит примерно так:
total 20 drwxr-xr-x 2 alex apache 4096 Feb 17 2009 cgi-bin drwxr-xr-x 2 alex apache 4096 Feb 17 2009 error drwxr-xr-x 6 alex apache 4096 Jul 26 2009 htdocs drwxr-xr-x 2 alex apache 4096 Feb 17 2009 htpasswd drwxr-xr-x 2 alex apache 4096 Feb 17 2009 icons
Допустим всё это имеет отношение к виртуальному хосту /var/wwww/stat.
Теперь заходим в /var/wwww/stat
и там выполняем чекаут:
После этого надо дать права юзеру, под которым SVN сможет редактировать репозитарий в этой папке:
Теперь добавляем Hook.
Создаём скрипт в файл /var/svn/stat/hooks/post-commit. И добавляем в него следующее:
#!/bin/sh
cd /var/www/stat && svn update --non-interactive --username 'USER_NAME' --password 'PAROL'
Пример приведён для репозитария stat и одноимённой веб директории.
Далее даём права на этот файл хука на выполнение
Теперь заносим стандартные папки apacha виртуального хоста в ревизию 1, где мы только что делали чекаут.
Можно воспользоваться вот такой командой:
Далее комитим добавленые в репозитарый новые файлы.
Рестарт Apache2
Т.к. SVN стоит в виде модуля апача, то для вступления в силу каких-либо изменений необходимо рестартить апач.
Использование SVN как standalone сервиса
В начале при необходимости можно подкорректирвоать /etc/conf.d/svnserve Далее стартовать сервер
После чего добавить его в автозапуск
Для доступа к нашему серверу по протоколу svn:// нужно настроить права на чтение и запись. Выполнить это можно вот тут
В этом файле правим строки, относящиеся к анонимному и авторизованному доступу
anon-access = none
auth-access = write
password-db = passwd
Теперь добавляем логин и пароль того пользователя с правами которого будем подключаться к репозитарию.
[users]
# harry = harryssecret
username = password
Для доступа к репозитарию нужно будет использовать команду:
svn://SERVER_URL:3690/SVN_PROJECT
По умолчанию порт 3690 подставлять не нужно, так как он стандартный в данном случае.
Перенос репозитария на другую машину
Теперь рассмотрим вариант, когда нам надо переустановить систему, или же сделать бэкап репозитария, а потом в случае утери данных восстановить его, ну или другие вариации на ту же тему.
Соответственно для создания дампа всего репозитария выполняем команду:
где первый путь это путь к самому репозитарию, а второй путь - это путь, куда сохранится файл дампа со всеми ревизиями, которые вы делали. Соответственно, если файл получился большой то его полезно упаковать в архив вашим любимым архиватором.
Затем, при восстановлении репозитария, мы должны выполнить следующую команду:
При условии, что у анс существует репозитарий с именем repository-name, а так же мы находимся в той папке, где он непосредственно находится. Например:
Стоит отметить, что дынный метод очень кросплатформенный в отличие от простого копирования файлов или замена их из архива. Таким образом можено перенести репозитарий из Linux в Windows.
Удаление SVN репозитария
Для удаления, перемещения или копирования репозитария достаточно просто применить эти операции к файлам и папкам, где репозитарий лежит.
Например для удаления всего репозитария надо ввести команду:
И не забываем подчистить конфиг от нашего описания репозитария: /etc/apache2/modules.d/47_mod_dav_svn.ssl-conf
Ссылки
- Официальный сайт Subversion
- The Risks of Distributed Version Control Бен Коллинз-Сассман
- более подробно об SVN читаем вот тут
- SVN Basics - Gentoo-Wiki
- Перенос репозитария с одного места в другое.
- htpasswd
- gentoo subversion server blog article
- Добавление всех unversioned файлов в репозитарий, чтобы потом сделать комит на них
BackUPs
- Gentoo Wiki - HOWTO Apache2 web server with subversion SVN and DAV
- Gentoo Wiki - Gentoo Wiki Archives Subversion Basics