Моя конфигурация apache2 для SVN:
ServerName server.org
<Location />
DAV svn
SVNPath /opt/svn/project.com
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.pem
SSLCertificateKeyFile /etc/apache2/ssl/server.key
svnadmin create /opt/svn/project.com
svn import /var/www/project.com file:///opt/svn/project.com/
А теперь я хочу иметь три копии моего проекта с /opt/svn/project.com:
/var/www/test1.project.com
/var/www/test2.project.com
/var/www/test3.project.com
И я хочу иметь возможность делать это так:
cd /opt/svn/project.com
svn add ./auth/
svn co ./ -c 'Comment'
И я хочу иметь возможность обновлять его на других хостах:
cd /var/www/test2.project.com
svn up ./
Что мне нужно сделать?
Если я правильно понимаю ваш вопрос, вы хотите создать единый репозиторий с включенной авторизацией, проверить его в нескольких местах и работать с ним из любого из этих мест. Это довольно просто, и у вас не должно возникнуть проблем после завершения настройки.
Я думаю, что следующие рекомендации гарантируют, что вы сможете делать то, что хотите, при условии, что я правильно интерпретирую ваш вопрос.
1) Ваш Apache Location
конфигурация должна быть следующей:
<Location /svn>
DAV svn
SVNPath /opt/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
Это позволит вам получить доступ к нескольким пунктам выдачи без конфликта с вашим репозиторием. Как и все остальное на вашем веб-сервере, URL-адреса не могут конфликтовать, поэтому вам не следует делать корень репозитория таким же, как корень веб-сервера (/
).
Также я поменял твою SVNPath
value - это должен быть каталог, в котором находятся ваши репозитории, а не путь к одному из репозиториев.
2) Создайте соответствующие структуры. Ваш svnadmin create
правильно. Однако для обеспечения гибкости в дальнейшем развитии вам необходимо создать trunk
, branches
, и tags
каталоги в каталоге проекта, используя svn --parents mkdir
. Ваш результирующий репозиторий (доступен по URL-адресу http://server/svn/project.com/
) должен иметь примерно такую структуру:
projectName
branches
tags
trunk
В trunk
здесь вы делаете всю свою работу. В branches
дерево предназначено для разветвления или параллельной разработки, а tags
tree предназначено для статических снимков вашего кода. Вам действительно нужно только trunk
, так как это тот, который вы будете проверять в своем примере.
3) Только Subversion изменяет /opt/svn/project.com
дерево для добавления / изменения содержимого. Из-за этого вы можете совершить транзакцию только при оформлении заказа, а не так, как вы указали.
Если у вас есть файловая система с предполагаемым содержимым, вы можете:
Проверьте ствол и добавьте под него свой контент:
svn co http://server/svn/project.com/projectName/trunk/ /var/www/test1.project.com
cp /var/www/project.com/foo /var/www/test1.project.com
svn add /var/www/test1.project.com/foo
svn ci /var/www/test1.project.com
Или импортируйте в репозиторий:
svn import /var/www/project.com http://server/svn/project.com/projectName/trunk
4) Чтобы получить несколько рабочих копий, просто ознакомьтесь с trunk
(или соответствующий подкаталог) в каждое из указанных вами мест. Затем любые изменения, совершенные в одной кассе, могут быть получены, как вы указали, используя svn up
.