Liberando espaço no meu repositório SVN

7

Eu tenho um repositório SVN hospedado em um site freemium com um tamanho máximo de repositório. À medida que me aproximo dessa capacidade, estou ciente dos arquivos que verifiquei e que posso remover permanentemente para liberar espaço em disco. Como eu digo ao SVN que um arquivo não pode ser excluído apenas, mas também histórico?

    
por fbrereto 03.10.2010 / 08:11

4 respostas

6

como diz Hubert, svnadmin pack irá agrupar todos os arquivos de repositório individuais em um diretório em um único arquivo grande. Isso vai lhe poupar algum espaço, mas é apenas adiar o dia do acerto de contas para você. (deveria fazer operações de história mais rápido entretanto, assim sua sugestão boa de qualquer maneira). Uma coisa a notar é que ele só funciona em diretórios compartilhados (isto é, a nova estrutura de diretórios coloca 1000 revisões em um único diretório, então inicia um novo diretório) e somente empacota os antigos diretórios de fragmentos, não aquele com a revisão atual. nele.

Então, sua única opção é excluir as revisões antigas do seu histórico. Isso exige svnadmin dump e carrega, opcionalmente com um filtro para remover diretórios em seu repo você não precisa mais. (por exemplo, ramos temporários antigos).

Para dump é fácil: svnadmin dump -r xxx:HEAD onde xxx é a revisão mais antiga que você deseja manter (ou seja, isso despejará os mais recentes, portanto, sua revisão antiga será descartada, como o arquivamento). Você pode manter o arquivo das revisões antigas, descarregando-as também ( svnadmin dump -r 1:xxx )

Depois que você tiver seu dumpfile, carregá-lo é tão fácil quanto executar svnadmin load passando o nome do dumpfile. 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ê quiser manter todas as revisões antigas, mas filtrar certos diretórios, você vai querer executar o dumpfile através de svndumpfilter , que removerá os caminhos especificados. Esteja ciente de que você deseja descartar sem usar a opção --incremental.

Obviamente, teste todas as operações localmente - copie para um arquivo local, carregue-o em um repositório temporário em sua unidade local (ele também será mais rápido) e teste o histórico e a versão mais recente funcionando ok - eu exporto as últimas revisão 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 ao vivo. Experimente com uma revisão histórica também se você quiser ser paranóico.

    
por 04.10.2010 / 00:44
3

De Perguntas frequentes sobre o Subversion :

The project has plans ... to someday implement an svnadmin obliterate command which would accomplish the task of permanently deleting information.

...

In the meantime, your only recourse is to svnadmin dump your repository, then pipe the dumpfile through svndumpfilter (excluding the bad path) into an svnadmin load command.

    
por 03.10.2010 / 08:54
1

Você não pode remover um arquivo do repositório SVN sem fazer o svnadmin dump; svndumpfilter; svnadmin load dance. Você pode reduzir o tamanho do repositório se você estiver usando o FSFS, apenas execute svnadmin pack no diretório repo.

    
por 03.10.2010 / 15:49
0

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

Não tenho certeza se acertei, mas é assim que entendo. O controle de versão é sobre somas de verificação exclusivas. Se você remover alguma coisa, há um risco de que essas somas de verificação sejam reutilizadas, o que leva a conflitos. Simplesmente não vale a pena mitigar um problema de pouco espaço em disco dessa maneira, melhor atualizar seu plano de dados.

    
por 03.10.2010 / 16:19