Melhor maneira de criar um SVN-Mirror?

8

Atualmente estou procurando a melhor maneira de configurar um espelho SVN. Atualmente vejo três possibilidades, todas com suas próprias desvantagens:

  • Tenha um SVN post-commit-Hook que esteja bloqueando e sincronizando via svnsync. O problema aqui é obviamente que o commit está bloqueando até que os dados sejam transferidos para o espelho.
  • Tenha um SVN post-commit-Hook que não bloqueie e sincronize via svnsync. Aqui eu vejo o seguinte, um problema mais sutil: imagine alguém verificando um arquivo GRANDE, e outra pessoa logo depois disso verifica em um arquivo pequeno. Como o commit é non-blocking, dois processos svnsync poderiam estar rodando ao mesmo tempo e o arquivo pequeno poderia ultrapassar o arquivo BIG no caminho para o mirror (isso parece muito crítico e improvável, embora possível em princípio). Sua revisão iria trocar.
  • Sincronize a cada quinze minutos com um cron-job. O mesmo problema se um commit demorar mais de 15 minutos e obviamente esse atraso.

Eu esqueci uma possibilidade? Eu recebi algo errado? Alguma ideia? Obrigado já!

Talvez eu deva observar que a segunda possibilidade é a sugerida por diferentes sites. Por exemplo. Vejo link

    
por roesslerj 03.03.2010 / 10:13

1 resposta

3

Você poderia tentar uma abordagem semelhante à que usamos na Atlassian

link

aviso: Eu sou atualmente um funcionário da Atlassian, mas não estava envolvido na implementação desta solução (apenas mantendo-a)

Como eu disse acima no comentário, o svnsync, executado a partir de um repositório remoto, se comporta de forma determinística. Não é possível aplicar changesets fora de ordem. Portanto, o único problema que você tem usando um repositório remoto é a quantidade de atraso devido à propagação do changeset.

    
por 03.03.2010 / 10:25

Tags