Remelhar o grande repositório SVN existente
-
26-09-2019 - |
Pergunta
Temos um repositório SVN bastante grande (50 GB, mais de 100.000 revisões). Trabalhar com ele é bem lento e meu palpite é que a razão para isso é a estrutura de diretório plana em db/rotações e db/revprops (onde cada revisão é um arquivo).
Usamos o formato FSFS com SVN 1.5 (em um servidor Linux), mas o repositório foi criado com uma versão SVN mais antiga. Agora eu li que o SVN 1.5 suporta "sharding" e entendi que esse recurso distribui as revisões em vários diretórios, para que um único diretório não contenha tantos arquivos. Isso parece bastante útil, mas infelizmente parece que esse recurso é usado apenas com repositórios que são criados recentemente com o SVN 1.5.
Como posso converter um grande repositório linear existente em um repositório sharded? O manual menciona a ferramenta "fsfs-shard.py", mas esse script diz "esse script está inacabado e não está pronto para ser usado em dados ao vivo. Confie em nós". Então, eu definitivamente não quero usar isso. Existe uma alternativa?
Solução
A melhor maneira é como mencionado o cilindro de despejo/carga. Mas você pode tentar o melhoria.
svnadmin upgrade
Faça uma cópia do seu repositório primeiro tente a atualização e teste -a ... (não perca fazer um backup).
Outras dicas
Vai um svnadmin dump
e svnadmin load
Faça o truque? http://subversion.apache.org/faq.html#dumpload
Como o processo de despejo/restauração requer muito espaço em disco e tempo de processamento, publiquei (em 2010) uma versão aprimorada de fsfs-reshard.py
que inclui suporte para subversão 1.6 Formato FSFS 5:https://github.com/ymartin59/svn-fsfs-seshard
Ele suporta alternar entre layouts lineares e sharded, desempacotando fragmentos quando necessário. Graças à computação do Shard Statistics, você pode antecipar tamanhos de revisão embalados selecionando o tamanho apropriado do Shard.
Claro que deve ser usado com cuidado:
- Primeiro procedimento de teste em uma cópia do repositório, se possível
- Prepare -se para ser restaurado
- Evite o acesso ao repositório ao processamento
- Corre
svnadmin verify
Antes de colocar ao vivo