Pergunta

Parece um problema simples:

  • Eu tenho um repo SVN dentro do nosso firewall.
  • Eu tenho um repo SVN fora do nosso firewall.
  • Eu tenho usuários dentro e fora, o firewall. (Nenhuma VPN não é uma opção :( isso seria demasiado fácil)
  • máquinas dentro do firewall pode conversar com o servidor fora SVN. Mas não o contrário.
  • o exterior SVN é uma coisa temporária -. Repo principal será sempre dentro

Eu quero de alguma forma (a partir de dentro, mais provável) tomar todas as mudanças em um, e aplicá-los para o outro. E vice versa. Parece simples, e eu suponho que o gosta GIT pode fazer isso, mas estamos usando SVN.

Qualquer pessoa fez isso? Eu não me importo de ser um processo manual -. Há apenas um par de pessoas externas, e eles não precisam de atualizações-to-the-minute, duas ou três vezes por dia faria

Eu acredito apache.org faz isso, mas não consigo encontrar docs sobre como eles fazem isso. Há um par de produtos lá fora, que fazê-lo (bem, um), mas eu gostaria de saber se alguém tem uma maneira agradável, limpo para fazê-lo sem eles. svnsync faz isso, apenas em uma única direção (master-slave)

Happy tê-lo executado em Windows, Linux ou Mac, como temos todos eles. Windows e Mac preferido embora.

Ajuda! :):)

[update] após 12 meses de andar (e não precisar disso no final), a resposta correta é, na minha opinião, correto. Uso git - tem um repo que puxa a partir SVN-A, em seguida empurrar para um novo repositório git, em seguida empurrar a partir daí para SVN-B. Deve funcionar:)

Foi útil?

Solução

Eu recomendo SVK ou git-svn .

Ambos permitem que você crie um espelho externo do seu repositório SVN, e permitir que os devs externos para fazer commits diretamente para o espelho externo. Você pode, então, puxar e empurrar muda a partir deste espelho externo ao seu repo interna principal.

git-svn que (eu acho) exige que os desenvolvedores externos para uso git. Eu prefiro, mas eu estaria relutante em empurrar este sobre os outros.

SVK, no entanto, permite que os desenvolvedores externos para continuar usando svn. Desde o repo interna só é acessível internamente, uma conta interna ou usuário teria que lidar com a sincronização periódica (um trabalho cron provavelmente iria funcionar).

Aqui está um howto estendida no wiki SVK: UsingSVKAsARepositoryMirroringSystem

Outras dicas

A simplicidade é geralmente a melhor maneira, e parece que você já tem uma solução simples:. Usar o repositório SVN fora do firewall

Você já disse máquinas dentro do firewall pode alcançá-lo, e, obviamente, máquinas fora pode alcançá-lo ... para que todos, de modo que justificação que você tem para um segundo repositório SVN dentro do firewall? Se é apenas como um back-up, em seguida, apenas back-up o lado de fora.

Deixe-me saber se eu estou faltando parte de suas necessidades.

Outro pensamento ... se você tem ambos os casos internos e externos SVN ... o que é impedi-los tanto dando a mesma identificação de alterações ao mesmo tempo, para fins diferentes? Se você está procurando uma solução descentralizada você deve olhar para GIT ao invés de SVN.

Uma das características da Enterprise Edition do VisualSVN Server é Multisite Repository Replication que faz exatamente o que você está procurando.

O recurso é baseado em VisualSVN tecnologia Distributed File System (VDFS), que foi projetado para permitir a replicação repositório Subversion transparente em locais geograficamente distribuídos. Algumas das características notáveis ??de VDFS:

  • Todos os repositórios VDFS Subversion distribuídos são graváveis,
  • VDFS permite transparente replicação de dados bidirecional,
  • VDFS suporta regras de autorização de replicação e mecanismos de autenticação avançados, como a autenticação integrada do Windows (NTLM / Negociar) com criptografia segura SSL / TLS.
  • repositórios Todos VDFS contêm o mesmo conjunto de dados,
  • replicação Repository sobre WAN com VDFS é de até x10 mais rápido do que a replicação com base em write-through proxy,
  • configuração
  • VDFS é feita através de uma interface gráfica sem passos complicados.

É importante notar que VDFS segue o clássico master-slave modelo de replicação que tem vantagens significativas sobre mestre-master modelo de replicação porque é mais adequado para replicar repositórios Subversion com FSFS fs-tipo de back-end. tecnologia VDFS é muito mais confiável do que as soluções de replicação mestre-mestre para SVN.

interface de configuração VDFS para multisite repos Apache SVN

Hmm ... mantendo dois repos em sincronia uns com os outros não é trivial, eu acho. Isso envolveria basicamente transformando SVN para Mercurial ou Git.

O mais perfeita e solução escalável é a replicação mestre / escravo usando svnsync que é descrito no livro Subversion: http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

Uma coisa que você poderia tentar é replicar o repo no nível de arquivo. Eu estou usando FolderShare ( http://www.foldershare.com - é executado no Windows e Mac) para uma semelhante cenário, embora eu esteja replicando-lo apenas para fins de backup e não tentou se conectar usando SVN para a réplica.

http://wandisco.com/subversion/multisite/

Subversion MultiSite aproveita replicação exclusivo da WANdisco tecnologia para imediatamente sincronizar repositórios Subversion ligado através uma rede de área alargada (WAN). usuários na cada local experiência de área local de rede (LAN) desempenho de velocidade para tanto ler e escrever operações. Subversion MultiSite também fornece hot backup contínuo e auto-cura capacidades que o desastre automatizar recuperação, de modo que o tempo de inatividade é praticamente eliminado.

Se você estiver procurando explicação passo a passo sobre a replicação master / slave usando svnsync, siga http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top