Назад | Перейти на главную страницу

Конфигурация SVN

Моя конфигурация 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.