Como evitar uma atualização svn global?

2

Estou tomando medidas para impedir que alguém (ou seja, eu) apague acidentalmente o servidor de produção.

Atualmente estou vendo o SVN. Estou preocupado que alguém possa acidentalmente emitir o comando svn update sem especificar nenhum arquivo para atualizar e, portanto, atualizar toda a base de código para a versão head.

Existe uma maneira de evitar que isso aconteça? Talvez faça svn um apelido para um pequeno script de passagem que verifica as entradas?

(Eu já configurei um alias para rm , para evitar que as pessoas removam mais de três arquivos por vez, sem ver um prompt de confirmação: alias rm='rm -I' . Há outros pequenos ajustes que as pessoas fazem em sua produção? servidores, para reduzir o risco de uma catástrofe acidental?)

    
por aidan 29.06.2011 / 18:50

1 resposta

4

Use tags para o seu ambiente de produção. Sempre marque seus lançamentos, verifique essas tags em um ambiente de teste (incluindo que eles têm apenas as alterações que você realmente deseja) e use o comando svn switch (aka svn sw ) no servidor de produção para "atualizar" para essa tag.

Dessa forma, um% acidental svn up não afetará nada (desde que você esteja seguindo as práticas recomendadas e não esteja desenvolvendo em suas tags ...).

"Correções pontuais" - isto é, correções rápidas de bugs que precisam entrar em produção agora - podem ser feitas corrigindo o tronco, copiando a tag de produção atual para uma nova tag e mesclando a correção do tronco na tag; em seguida, use o mesmo comando svn sw para levar a produção até essa tag.

Além disso, o comentário de @ Shane para usar svn export (exportando sua tag) é bom, já que garante que você não esteja vazando dados do histórico de revisão através das pastas .svn em seu servidor web. Seu processo de promoção consistiria então em exportar a tag para uma nova pasta (vazia), em seguida, fazer um switcheroo rápido, renomeando a pasta de produção atual para outra coisa e renomeando a pasta "staging" para o nome da pasta de produção. Por exemplo, no Linux, ficaria assim:

mkdir staging
svn export http://www.example.com/path/to/your/tag staging/
mv production/ production-old/ && mv staging/ production/

A desvantagem dessa abordagem é que você não pode usar, e. svn info para descobrir em que produção de tags está atualmente, mas se você tiver boas políticas e seguir boas práticas, deverá ter esta informação à mão - e ela deve ser precisa - de qualquer maneira.

    
por 29.06.2011 / 19:35