Este recurso é muito útil para plugins que são usados em mais de um projeto. Procurando na net é um tanto fraca a documentação a respeito de como usar o recurso svn:externals. No svn book ele mostra as informações fragmentadas e não o processo todo.
Neste texto eu descrevo o processo de criar um novo repositório, exportar os arquivos para ele e então gerar o link do externals apontando para o novo repositório. Vou descrever boa parte destas tarefas considerando o uso do tortoise no lado do cliente, mas a parte do externals também vou colocar a linha de comando, visto que a documentação no livro é muito fragmentada.
1 - Exportar o arquivos para uma nova pasta.
Usando o tortoise, escolhemos a pasta e selecionamos "export". Isso irá criar uma nova pasta não versionada, com tudo o que tinha ali dentro. Não versionada quer dizer sem aquele monte de .svn que ele cria.
2 - Criar o repositório no servidor.
svnadmin create jsCallPlugin
Neste ponto é importante verificar se a pasta tem permissões para ser alterada pelo usuário do svn. Existem várias maneiras de se fazer isso, mas uma que pode ser utilizada é atribuir ao diretório um grupo compartilhado por todos os usuários do svn.
3 - Fazer um check out do repositório na sua máquina.
com o tortoise, é só clicar na pasta e então escolher o checkout, colocar o endereço e pronto.
4 - Mandar os arquivos pro novo repositório.
Lembra aqueles arquivos que fizemos export. Pois é, estes arquivos devem ser copiados para o repositório. Veja que é uma boa prática criar as pastas trunk, branches e tags. Neste caso podemos copiar nossos arquivos para dentro da trunk. Depois é só fazer o "commit" normalmente.
Este é o método que considero mais simples, mas você também pode, tendo os arquivos no servidor, usar um import para coloca-los no novo repositório.
5 - Definir o externals.
Finalmente o que interessa.
O svn:externals é uma propriedade que atribuimos a um diretório na nossa cópia de trabalho. Esta propriedade será enviada para o servidor quando fizermos o commit. Esta propriedade indica que, ao se atualizar uma cópia de trabalho, o svn deverá buscar, para colocar dentro do diretório ao qual atribuimos a propriedade, dados de um outro repositório. Então precisamos entender 3 coisas nessa configuração:
a) o diretório que tem a propriedade (diretório local)
b) o caminho do repositório
c) o nome do novo diretório que será criado (diretório externo)
Sabendo destes elementos fica fácil não cair em erros comuns que vemos pelos foruns da net.
Então, para fazer o externals do jeito mais difícil (no dos) usamos o seguinte comando:
svn propedit svn:externals . --editor-cmd edit
O ponto é o endereço do diretório local ao qual atribuimos a prop. (que pode ser trocado, é claro)
O comando --editor-cmd indica que vamos usar o edit.bat para editar as propriedades.
bom, dentro deste arquivo precisamos colocar os nomes dos diretórios externos e seus respectivos repositórios:
dir1 http://repos/plugin1/trunk
dir2 http://repos/plugin2/trunk
e depois é só salvar o arquivo normalmente. No próximo update, o svn vai buscar destes repositórios e criar as pastas dir1 e dir2, trazendo o conteúdo de plugin1 e plugin2 respectivamente.
Bom, e do jeito mais fácil ?
No tortoise, basta clicar sobre o diretório local e escolher o comando properties (dentro dos comandos do tortoise, é claro). Com isso vai aparecer uma lista das propriedades e suas configurações. Adicione a propriedade svn:externals com uma linha com "[nomedodiretorio] [urldorepositorio]" para cada externals
Nenhum comentário:
Postar um comentário