É seguro ter pastas /.svn/ no site ativo? (Como removê-los, mas reter a capacidade de atualização do svn?)

10

Estou fazendo o svn update para atualizar o código do meu site php, mas deixa .svn/pastas por todo o lado.

Eu acho perigoso deixar esses arquivos publicamente legíveis, mas é muito fácil atualizar o sistema.

Existe uma maneira de usar svn updatepara atualizar o sistema, mas não para exportar as .svn/pastas?

siliconpi
fonte

Respostas:

21

Se você estiver usando o apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

Isso impedirá que as pessoas acessem .svndiretórios remotamente (usando o navegador), mas você pode mantê-lo (e recursos svn) no projeto.

BTW você pode substituir \.svnpara \.gitou \.cvsse você estiver usando algo diferente do que subversão.

coredump
fonte
e isso bloqueará todos os diretórios .svn do site? eu tenho muitos subdiretórios
siliconpi
atualmente meu httpd.conf possui <Diretório /> Opções FollowSymLinks AllowOverride All </Directory> posso adicionar o que você escreveu logo abaixo como uma coisa separada ou as duas entradas precisam ser mescladas?
Siliconpi
Ele corresponderá a qualquer diretório chamado .svnsim.
Coredump
Você pode adicioná-lo separadamente.
Coredump
3

Você deseja exportar seu código do SVN para o site ao vivo ...

Não use svn updatepara isso. update destina-se a ser usado com a atualização de cópias de trabalho, sem a exportação do código. Use em svn exportvez disso, pois exporta uma árvore de diretórios limpa do repositório especificado.

O --forcesinalizador permitirá que a exportação substitua os arquivos existentes.

Entrada manual de exportação do SVN

gsreynolds
fonte
Posso simpatizar se o OP não quiser usar export, pois envolve sempre pegar uma cópia totalmente nova do repositório, o que é um aborrecimento se for um repositório grande em uma conexão pequena (digamos, o servidor Web é um servidor hospedado, mas seu repositório SVN está no escritório local e é compartilhado por um link de 1Mb). updatesignifica que você não precisa ter a coisa toda toda vez.
Mark Henderson
Um ponto justo. Talvez exportar para uma cópia local do site e, em seguida, apenas sincronizar as alterações no servidor da web remoto funcionasse nessa situação? Eu nunca tive esse problema, então não tinha considerado.
amigos estão dizendo sobre gsreynolds
2

Eu não os coloco em sites de produção / ao vivo. Porque eu não quero que eu e / ou outros desenvolvedores esqueçamos a má ideia de editar o código ao vivo. Meu script de instalação filtra meus arquivos .svn.

ekerner
fonte
@ kerner - como você os atualiza então?
Siliconpi
1
Por que não usar svn exporte não se incomodar em filtrá-los?
Pjmorse #
Eu tenho um script de instalação que eu uso nos meus sites e ajusto um pouco para se adequar a cada um. Geralmente ele também cria coisas como construir bancos de dados, tabelas e usuários db, configurar usuários ou administradores padrão, etc. Para fazer uma exportação para o prod, o usuário do prod (como humano ou script) verifica um svn trabalhando copiar para algum lugar ao longo de ~ / e, em seguida, executa o script de instalação que é um membro da referida cópia de trabalho e, opcionalmente, exclui a cópia de trabalho.
ekerner
1

Você deve procurar um sistema de implantação adequado, como o Capistrano . Isso significa que seus servidores de produção não precisam de subversão e você pode implantar em vários servidores e adicionar lógica personalizada às implantações. Também torna relativamente fácil reverter implantações.

dhasenan
fonte