Como configuro um espelho do sistema de arquivos somente leitura para um repositório SVN?

3

Eu tenho um repositório SVN que mora em uma unidade de rede do Windows (e acessado por meio de um file url). Vários colegas de trabalho não podem e não usarão o SVN, por isso preciso manter um espelho somente leitura de tudo no repositório em outro diretório.

Não vejo nenhuma maneira fácil de fazer isso. Eu não posso torná-lo uma cópia de trabalho, porque isso consome muito espaço na rede. svn export não remove arquivos que foram excluídos do repositório. Eu estava tentando criar um script de gancho para copiar arquivos quando eles foram registrados, mas não posso garantir que o caminho para o executável do SVN seja o mesmo para todos os clientes.

Eu teria simplesmente um script que eu executo manualmente, que compara cada arquivo no repositório com o arquivo na rede e o exclui ou copia se houver uma incompatibilidade, mas não consigo obter o tamanho de o arquivo do repositório, o que significa que eu teria que confiar somente na data de alteração relatada do arquivo - o que estou relutante em fazer.

Qual é a melhor maneira de configurar isso?

    
por Chris B. 06.06.2009 / 02:01

5 respostas

4

Eles não usam o SVN? Honestamente, eu faria o meu melhor para abaixar suas gargantas (qualquer usuário final pode usar o TortoiseSVN com um mínimo de re-treinamento) se for possível. Não há razão para você ter que cortar sua preguiça.

Até onde eu vejo, existem pelo menos duas maneiras de hackeá-lo -

  • Crie cópias de trabalho separadas e gerencie manualmente o SVN para cada

Eu realmente tenho o mesmo problema no meu local de trabalho, e meu chefe me disse que nós não podemos forçá-los a usá-lo. Em vez disso, criamos um compartilhamento de rede para cada desenvolvedor / grupo que precisa de acesso ao código e, em seguida, manualmente svn up / svn commit para eles mediante solicitação.

  • Tenha uma cópia de trabalho "Mestre" e distribua o acesso SMB / FTP / NFS a ela

Nós temos uma configuração terrível com outro grupo - eles não queriam usar o SVN, então nós apenas demos a eles acesso bruto ao Samba para a máquina de produção para mexer nos arquivos. Então, toda noite, um cron job passa e adiciona todos os novos arquivos e envia para o repo. Como há apenas uma cópia de trabalho, nunca há conflitos. Honestamente, serve pouca coisa, exceto para me fazer dormir um pouco mais sonora à noite.

Ambos são maneiras absolutamente estúpidas de fazer isso - o primeiro requer resolução de conflito de mão (por você ou um membro de sua equipe) e o outro praticamente não tem vantagem sobre os backups de disco. IMHO a única solução real é ensinar aos seus usuários finais não apenas como usar o SVN, mas por que eles deveriam usá-lo. Dessa forma, eles podem ser responsáveis por seu próprio trabalho, deixando você para lidar com os problemas reais.

    
por 06.06.2009 / 02:37
1

Fazer um ROBOCOPY / MIR a partir de uma cópia de trabalho existente?

    
por 06.06.2009 / 02:11
1

Talvez você possa usar o webdav para isso? Mais informações aqui: autoversionamento do webdav Certifique-se de ler os avisos e tal.

(Mas eu concordo com a resposta "force-os a usá-lo de qualquer maneira").

    
por 06.06.2009 / 04:34
1

Tente usar o SVN :: Notify :: Mirror

link

É um módulo perl, mas você o conecta através do sistema padrão de gancho SVN (a documentação tem exemplos).

Isso manterá uma cópia registrada do repositório ou parte dele localmente, mas poderá enviar isso para outro sistema usando o rsync. Contanto que você obtenha suas permissões diretamente, essa será sua cópia atualizada somente de leitura para as pessoas se referirem.

    
por 06.06.2009 / 17:33
0

Eu fiz alguns testes com o VisualSVN Server e tartaruga

Se eu colocar este comando no gancho Post-Commit, qualquer alteração que eu fizer será enviada para a pasta c: \ data \ folder_to_share_readonly.

"svn_executable_path \ svn" atualiza c: \ data \ pasta_para_share_readonly --quiet --non-interactive --username myUser --password myPwd

    
por 06.06.2009 / 03:03

Tags