Esta seção descreverá como configurar, administrar e proteger um servidor "Subversion".
As seguintes instruções instalarão um servidor "Subversion", que será configurado para usar "OpenSSH" como o método de acesso remoto seguro, com "svnserve" disponível para acesso anônimo.
A configuração do servidor "Subversion" consiste nas seguintes etapas:
            Você precisará ser o(a) usuário(a) "root" para a parte inicial da configuração.
            Crie o(a) usuário(a) e grupo "svn" com os seguintes comandos:
          
groupadd -g 56 svn && useradd -c "Proprietário(a) do SVN" -d /home/svn -m -g svn -s /bin/false -u 56 svn
            Se você planeja ter vários repositórios, [então] deveria ter um
            grupo dedicado para cada repositório para facilitar a
            administração. Crie o grupo "svntest" para o repositório de teste e
            adicione o(a) usuário(a) "svn" a
            esse grupo com os seguintes comandos:
          
groupadd -g 57 svntest && usermod -G svntest -a svn
Além disso, você deveria configurar "umask 002" enquanto trabalha com um repositório, de forma que todos os novos arquivos sejam escrevíveis pelo(a) proprietário(a) e pelo grupo. Isso é tornado obrigatório criando-se um "script" envólucro para "svn" e "svnserve":
mv /usr/bin/svn /usr/bin/svn.orig && mv /usr/bin/svnserve /usr/bin/svnserve.orig && cat >> /usr/bin/svn << "EOF"#!/bin/sh umask 002 /usr/bin/svn.orig "$@"EOF cat >> /usr/bin/svnserve << "EOF"#!/bin/sh umask 002 /usr/bin/svnserve.orig "$@"EOF chmod 0755 /usr/bin/svn{,serve}
            Se usar o "Apache" para trabalhar com o repositório via "HTTP", mesmo para acesso anônimo, [então] você deveria agrupar "/usr/sbin/httpd" em um "script" semelhante.
Existem várias maneiras de configurar um repositório "Subversion". Recomenda-se dar uma olhada no capítulo correspondente do Livro SVN. Um repositório básico pode ser configurado com as instruções abaixo.
            Crie um novo repositório "Subversion" com os seguintes comandos (como
            o(a) usuário(a) "root"):
          
install -v -m 0755 -d /srv/svn && install -v -m 0755 -o svn -g svn -d /srv/svn/repositories && svnadmin create /srv/svn/repositories/svntest
            Agora que o repositório foi criado, ele deveria ser povoado com
            algo útil. Você precisará ter um esquema predefinido de diretório
            configurado exatamente como deseja que seu repositório aparente.
            Por exemplo, aqui está um exemplo de configuração de esquema do
            BLFS com uma raiz de "svntest/".
            Você precisará configurar uma árvore de diretórios semelhante à
            seguinte:
          
svntest/            # O nome do repositório
   trunk/           # Contém a árvore existente de fonte
      BOOK/
      bootscripts/
      edguide/
      patches/
      scripts/
   branches/        # Necessário para ramificações adicionais
   tags/            # Necessário para rotular pontos de lançamento
          Depois que tiver criado teu esquema do diretório conforme mostrado acima, você estará pronto(a) para fazer a importação inicial:
svn import -m "Importação inicial." \
    </caminho/para/árvore/fonte>      \
    file:///srv/svn/repositories/svntest
          
            Agora mude as informações do(a) proprietário(a) e do grupo no
            repositório e adicione um(a) usuário(a) sem privilégios aos
            grupos "svn" e "svntest":
          
chown -R svn:svntest /srv/svn/repositories/svntest    &&
chmod -R g+w         /srv/svn/repositories/svntest    &&
chmod g+s            /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <nome_usuário(a)>
          
            "svntest" é o grupo atribuído ao
            repositório "svntest". Conforme mencionado anteriormente, isso
            facilita a administração de repositórios múltiplos ao usar
            "OpenSSH" para autenticação. A
            partir de agora, você precisará adicionar teu(ua) usuário(a) sem
            privilégios, e quaisquer usuários(as) adicionais que desejar ter
            acesso de escrita ao repositório, aos grupos "svn" e "svntest".
          
            Além disso, você notará que o diretório "db" do novo repositório está configurado o "ID"
            de grupo. Se o raciocínio não for imediatamente óbvio, [então] ao
            usar qualquer método externo de autenticação (como "ssh"), o bit "sticky" é
            configurado, de forma que todos os novos arquivos sejam de
            propriedade do(a) usuário(a), mas do grupo de "svntest". Qualquer um(a) no grupo
            "svntest" consegue criar
            arquivos, mas, ainda assim, conceder ao grupo inteiro acesso de
            escrita a esses arquivos. Isso evita bloquear outros(as)
            usuários(as) fora do repositório.
          
Agora, retorne para uma conta de usuário(a) sem privilégios e dê uma olhada no novo repositório usando "svnlook":
svnlook tree /srv/svn/repositories/svntest/
            
              Você possivelmente precise sair e entrar novamente para
              atualizar tuas titularidades de membros(as) de grupo.
              "su <nome_de_usuário(a)>"
              também deveria funcionar.
            
Como mencionado anteriormente, estas instruções configurarão o servidor para usar somente "ssh" para acesso de escrita ao repositório e para fornecer acesso anônimo usando "svnserve". Existem várias outras maneiras de fornecer acesso ao repositório. Essas configurações adicionais estão melhor explicadas em https://svnbook.red-bean.com/.
            A configuração de acesso precisa ser feita para cada repositório.
            Crie o arquivo "svnserve.conf" para
            o repositório "svntest" usando os seguintes comandos:
          
cp /srv/svn/repositories/svntest/conf/svnserve.conf \
   /srv/svn/repositories/svntest/conf/svnserve.conf.default &&
cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF
          
            Não há muito no arquivo de configuração. Você notará que somente
            a seção geral é exigida. Dê uma olhada no arquivo "svnserve.conf.default" para informações
            relativas a usar o método de autenticação integrado do
            "svnserve".
          
Para iniciar o servidor durante a inicialização, instale o "script" de inicialização "svn" incluído no pacote "blfs-bootscripts-20230101":
make install-svn