Liberando espaço no meu repositório SVN

8

Eu tenho um repositório SVN hospedado em um site freemium com um tamanho máximo de repositório. Ao abordar essa capacidade, conheço os arquivos que fiz check-in e sei que posso remover permanentemente para liberar espaço em disco. Como digo ao SVN que um arquivo não pode apenas ser excluído, mas também histórico?

fbrereto
fonte

Respostas:

7

como diz Hubert, svnadmin packcompactará todos os arquivos de recompra individuais em um diretório em um único arquivo grande. Isso economizará um pouco de espaço, mas está apenas adiando o dia do acerto de contas para você. (porém, deve agilizar as operações do histórico, portanto, é uma boa sugestão). Uma coisa a observar é que ele funciona apenas em diretórios sharded (ou seja, a nova estrutura de diretórios é colocar 1000 revisões em um único diretório e depois iniciar um novo diretório) e compacta apenas os diretórios shard antigos, não aquele com a revisão atual iniciar.

Portanto, sua única opção é excluir revisões antigas do seu histórico. Isso requer svnadmin dump and load, com opcionalmente um filtro para remover diretórios em seu repositório que você não precisa mais. (por exemplo, ramos temporários antigos).

Fazer o dump é fácil: svnadmin dump -r xxx:HEADonde xxx é a revisão mais antiga que você deseja manter (ou seja, isso fará o dump das mais recentes, para que sua revisão antiga seja descartada, como arquivamento). Você pode manter o arquivo das revisões antigas despejando-as também ( svnadmin dump -r 1:xxx)

Depois de ter seu arquivo de despejo, carregá-lo é tão fácil quanto executar o svnadmin load passando o nome do arquivo de despejo . pode ser uma boa idéia excluir o repositório antigo antes de carregar o novo - então você obtém o benefício das propriedades mais recentes do sistema de arquivos do servidor, se ainda não as tiver.

Se você deseja manter todas as revisões antigas, mas filtrar determinados diretórios, execute o dumpfile através do svndumpfilter , que removerá os caminhos especificados. Esteja ciente de que você deseja despejar sem usar a opção --incremental.

Obviamente, teste todas as operações localmente - faça o dump para um arquivo local e, em seguida, carregue-o em um repositório temporário na unidade local (também será mais rápido) e teste se o histórico e a versão mais recente funcionam bem - exporto a revisão mais recente para um diretório e use o winmerge para verificar se os arquivos são idênticos a uma exportação da revisão mais recente do repositório ativo. Experimente também com uma revisão histórica se quiser ser paranóico.

gbjbaanb
fonte
3

Nas Perguntas frequentes do Subversion :

O projeto tem planos ... de algum dia implementar um comando svnadmin obliterate que realizará a tarefa de excluir informações permanentemente.

...

Enquanto isso, seu único recurso é svnadmin despejar seu repositório e canalizar o dumpfile através de svndumpfilter (excluindo o caminho incorreto) em um comando svnadmin load.

nedm
fonte
2

Você não pode remover um arquivo do repositório SVN sem fazer a svnadmin dump; svndumpfilter; svnadmin loaddança. Você pode reduzir o tamanho do repositório se estiver usando o FSFS, apenas execute svnadmin packno diretório repo.

Hubert Kario
fonte
0

Geralmente, é uma má idéia remover arquivos de um repositório sob controle de versão.

Não sei se entendi direito, mas é assim que eu entendo. O controle de versão é sobre somas de verificação exclusivas. Se você remover algo, existe o risco de essas somas de verificação serem reutilizadas, o que leva a conflitos. Simplesmente não vale a pena mitigar um problema de pouco espaço em disco dessa maneira, atualize melhor seu plano de dados.

halp
fonte