Substituindo diretórios que são monitorados pelo subversion

1

Estamos tentando atualizar um software instalado que temos sob controle pela subversão. As instruções de atualização para o software requerem a substituição de vários diretórios que possuem diretórios .svn.

Como não podemos substituir esses diretórios por completo, estou tentando criar uma maneira de substituir o conteúdo desses diretórios (e recursivamente o conteúdo de todos os subdiretórios), mas não os próprios diretórios. Eu acho que tem que haver uma solução usando uma combinação de sinalizadores para cp , mas não consigo descobrir qual é essa combinação.

Eu olhei para o diretório cp -aR / existing_directory / , mas não consigo usar -a porque os carimbos de data e hora não são confiáveis para atualizações. Não tenho problema em substituir todos os arquivos. Além disso, não acredito que a barra final seja executada em subdiretórios recursivamente.

Eu ficaria grato se alguém pudesse me guiar na direção correta. Obrigado!

    
por Christopher Armstrong 12.03.2012 / 05:08

1 resposta

4

Isso parece confuso. O Subversion fica todo chateado quando você apaga .svn diretórios.

A maneira como faço isso é criar uma cópia, remover todos os diretórios .svn da cópia, executar a atualização na cópia e usar rsync para copiar todas as alterações da cópia para a original.

A sequência deve ser algo como isto:

cp -R software/ software-copy/
cd software-copy/
find . -type d -name .svn -delete
./upgrade-script.sh
cd ..
rsync -avtl software-copy/ software/

Você pode adicionar -n a essas opções de rsync se quiser fazer uma execução a seco e ver o que seria copiado sem realmente fazer isso.

    
por 12.03.2012 / 08:16