SVN 配置

SVN 配置

我的 SVN 的 apache2 配置:

服务器名称 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

如果我理解正确的话,您希望创建一个启用授权的存储库,将其签出到多个位置,然后从其中任何一个位置使用它。这非常简单,完成设置后,您应该不会遇到任何问题。

我认为,如果我正确地解释了您的问题,以下建议将确保您能够做您想做的事情。

1)您的ApacheLocation配置应如下:

<Location /svn>
  DAV svn
  SVNPath /opt/svn

  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd

  Require valid-user
</Location>

这样您就可以访问多个签出点,而不会与存储库发生冲突。与 Web 服务器上的其他任何内容一样,URL 不能发生冲突,因此您不应将存储库根目录与 Web 服务器根目录 ( /) 设置为相同。

另外,我改变了你的SVNPath值 - 这应该是你的存储库所在的目录,而不是存储库本身的路径。

2) 创建适当的结构。您的代码svnadmin create是正确的。但是,为了确保未来开发的灵活性,您需要使用 在项目目录下创建trunkbranches和目录。您生成的存储库(通过 URL 访问)应具有类似以下结构:tagssvn --parents mkdirhttp://server/svn/project.com/

projectName
  branches
  tags
  trunk

trunk您完成所有工作的地方。树branches用于分叉或并行开发,树tags用于代码的静态快照。您实际上只需要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

相关内容