SVN - Básico
Rotinas comuns e processos básicos do SVN
- Checkout
- Merge - Comum sem conflitos
- Copy To
- Commit
- Update
- Show Log
- Repo-browser
- Clean up
- Switch
- Fluxo trabalho SVN
Checkout
Checkout é utilizado para criar uma cópia local de um diretório já existente, como por exemplo o Branch de uma versão.
Para fazer essa cópia, clique com o botão direito no repositório desejado e selecione a opção "SVN Checkout".
Logo após selecionar a opção de Checkout, como demonstrado acima, será necessário selecionar qual Branch deseja copiar e escolher o caminho que ele irá ser criado (exemplo feito no Desktop).
1 - Endereço do repositório do SVN
Endereço do diretório do SVN que será baixado para a máquina, atentar-se principalmente para a parte final do endereço, verificando se está na pasta desejada.
2 - Endereço do repositório onde será realizada a cópia local
Endereço do diretório local que será realizado o download com as informações selecionadas no campo superior. Verificar que o programa sugere o nome da pasta que será baixada como nome da pasta local.
3 - Profundidade do Checkout
Este campo deve ser preenchico com "Fully recursive" para que as alterações sejam consideradas mesmo que estejam em subpastas do diretório principal.
4 - Revisão
Neste campo deve ser selecionada qual "revision" se deseja fazer o download. Deve-se selecionar "HEAD revision" para que se realize o download do diretório como está atualmente no SVN. Caso deseje realizar download de alguma revisão específica, deve-se selecionar "Revision" e informar qual o número da revision desejada.
5 - Botões
Ok - Confirma configuração do checkout e inicia o download do diretório.
Cancel - Cancela configuração do checkout e saí da tela atual.
Help - Abre o helper com as informações do procedimento.
Após selecionado qual Branch e o caminho basta clicar em "OK" e começara o Download do Branch no caminho especificado.
Merge - Comum sem conflitos
Merge é utilizado para mesclar alterações de um branch com outro, geralmente feito em branchs de casos para ficar atualizados com o Trunk.
Antes de realizar um Merge, deve-se seguir algumas etapas:
- Verificar se há alterações que serão salvas. Caso tenham, realizar o commit dessas alterações.
- Verificar se após o commit das alterações, existam outras alterações que não serão salvas. Caso tenham, realizar um Clean up na pasta.
- Após verificação das etapas anteriores, realizar um update na pasta.
Verificadas as etapas anteriores, estamos aptos à realizar o merge propriamente.
Iremos ilustrar um merge com uma pasta de exemplo:
Para isso clicar com o botão direito do mouse na pasta desejada e em seguida clique em "TortoiseSVN > Merge":
Será aberta a tela "Merge Type", selecione a opção "Merge a range of revisions" e em seguida clique em "Next":
A próxima tela será a tela "Merge revision range", em "URL to merge from" será a URL do diretório em que quer pegar as modificações.
Se atentar a estrutura utilizada:
- Caso dentro da pasta não tenha a "CodigoBaseSkin", deve se usar a URL abaixo sem "CodigoBaseSkin".
Verifique se o diretório do Trunk está correto (https://wiki.supersoft.com.br/svn/desenvolvimento/trunk/CodigoBaseSkin).
No quadro "Revision range to merge" selecionar a opção "all revisions" e clicar em "Next":
Na tela "Merge options", em "Merge depth" selecionar a opção "Fully recursive" e em seguida clicar em "Test merge":
Após o "Test merge" ter sido completado e caso não seja apresentado nenhum conflito, clique em "OK":
Se você é do setor da Qualidade, e no "Test merge" apresentar qualquer conflito chame um desenvolvedor para que as inconsistências sejam verificadas e corrigidas. O "Test merge" SEMPRE deve ser realizado.
Após o "Test merge" ter sido finalizado e clicar em "OK" a tela "Merge options" será exibida novamente. Clique em "Merge". Será exibida a tela "Auto-Merge Finished" e então clique em "OK":
Após o "Merge", é necessário realizar o "Commit" que é o upload das alterações realizadas para o SVN.
Para saber como realizar o "Commit" clique aqui
Copy To
Copy To é utilizado para criar uma cópia de um diretório para outro dentro do SVN.
Para fazer essa cópia, acesse o SVN através do Repo-Brower
Acesse o repositório Destino(Para onde quer copiar):
Copie o endereço "URL" da pasta na parte superior da tela.
Botão direito, "Copy To".
Cole o endereço copiado na caixa URL:
Ex.:
https://wiki.supersoft.com.br/svn/desenvolvimento/branches/Vinicius/Caso_00000
Após, apertar em "OK".
Após apertar em "OK", conferir na próxima tela se o comando está como "Copy" para evitar problemas.
Commit
Após concluir as alterações, é necessário commitar as mudanças efetuadas, para isso basta ir até a pasta alterada, clicar com o botão direito e selecionar a opção "SVN Commit...".
Feito isso, a seguinte tela será aberta.
1 - Endereço onde será commitado
Verificar se o endereço apresentado neste campo é o endereço desejado à se realizar o commit.
2 - Mensagens recentes
Ao clicar neste botão, serão apresentadas as mensagens de versionamento utilizadas recentemente, isso pode facilitar a localização do que você quer, caso já tenha commitado algo relacionado.
3 - Mensagem de versionamento
Neste tópico deve-se seguir o modelo de mensagem de versionamento para facilitar o seu trabalho ou o da equipe caso precise verificar as modificações através do Show Log.
4 - Seleção
Ao abrir a tela de commit, deve-se selecionar a opção "none" para desmarcar todas as seleções de unit. Pois deve-se verificar individualmente cada unit afim de conferir todas as mudanças feitas e se encaixam no padrão de código.
5 - Units identificadas
Neste quadro, aparecerão units alteradas ou não versionadas. Units adicionadas, eventualmente podem aparecer como "non-versioned", embora seja mais comum aparecerem como "added", devido a isso é importante checar bem antes de enviar, para não ter perigo de faltar alguma unit, pois futuramente será necessário utilizar da ferramenta "Clean up".
6 - Opções
Show Log é utilizado para verificar todas as mudanças feitas naquele diretório;
Ok é utilizado para concluir o processo de commit, após verificado todos os passos acima;
Cancel é utilziado para cancelar a opeção;
Update
Update é utilizado para atualizar o seu repositório local com o repositório no SVN.
Pode ser feito tanto para pasta toda quanto para arquivos individuais.
- Escolha a pasta local que deseja atualizar.
- Clique com botão direito do mouse.
- Clique em Update
Aguarde o processo terminar e aperte em "OK".
Show Log
Show Log é utilizado para ver as modificações que o diretório/arquivo sofreram, como forma de histórico.
Para acessar,
- Escolha a pasta local que quer ver o histórico.
- Clique com botão direito do mouse.
- Clique em TortoiseSVN -> Show Log
Ao ser aberto, a página trás as últimas 100 revisões "revisions", mas poderá aumentar os resultados através de:
- Buscará desde o primeiro registro existente.
- Abrirá uma tela para definir intervalo de data, ou intervalo entre revisões "revisions".
Repo-browser
Repo-Browser é utilizado para navegar entre os diretórios através das pastas e não dos links.
- Escolha uma pasta local.
- Clique com botão direito do mouse.
- Clique em TortoiseSVN -> Repo-Browser
Com a tela que se abre é possível navegar entre as pastas e fazer ações com Show Log
- Local para especificar o número da revision, assim poderá fazer ações especificas daquele momento do versionamento.
Clean up
Se um comando do SVN não pôde ser concluído com sucesso, talvez devido a problemas no servidor, sua cópia de trabalho pode ser deixada em um estado inconsistente. Ou se precisar fazer um merge com a versão ou trunk.
É importante fazer o clean up no diretório para que todas as units que sofreram alterações mas que não serão salvas no servidor, retornem ao seu estado anterior às alterações, como por exemplo na imagem a seguir:
Observar que, constantemente aparecem units com extensões do tipo: .dproj, .dres, .stat, etc, que geralmente se encontram com o status "non-versioned". Essas units, não devem ser enviadas ao servidor. Por isso, lembre-se de realizar o clean up
A única unit que será efetivamente alterada neste exemplo, é a unit "Funcio2.dfm", as outras apesar de modificadas, não serão efetivamente salvas no servidor, e por isso devem ser eliminadas com o comando Clean up da seguinte forma.
No diretório desejado, clique com o botão direito, selecione a opção "TortoiseSVN" -> "Clean up..." como demonstrado abaixo.
A seguinte tela será aberta com todas a opções de limpeza para deixar sua cópia de trabalho em um estado limpo.
As opções mais comuns e utilizados são:
"Clean up working copy status"
Conforme declarado acima, esta opção tenta colocar uma cópia de trabalho inconsistente em um estado funcional e utilizável. Isso não afeta nenhum dado que você tenha, mas apenas os estados internos do banco de dados da cópia de trabalho. Este é o comando de limpeza real que você conhece de clientes TortoiseSVN mais antigos ou outros clientes SVN.
"Break write locks"
Se marcado, todos os bloqueios de gravação são removidos do banco de dados da cópia de trabalho. Na maioria das situações, isso é necessário para que a limpeza funcione!
Apenas desmarque esta opção se a cópia de trabalho for usada por outros usuários / clientes no momento. Mas se a limpeza falhar, você deve marcar esta opção para que a limpeza seja bem-sucedida.
"Refresh shell overlays"
Às vezes, as sobreposições de shell, especialmente na visualização em árvore no lado esquerdo do explorer, não mostram o status atual ou o cache de status falhou em reconhecer as alterações. Nessa situação, você pode usar este comando para forçar uma atualização.
"Include externals"
Se esta opção estiver marcada, todas as ações também serão realizadas para todos os arquivos e pastas incluídos na propriedade svn: externals.
"Delete unversioned files and folders"
Esta é uma maneira rápida e fácil de remover todos os arquivos gerados em sua cópia de trabalho. Todos os arquivos e pastas sem controle de versão são movidos para a lixeira.
Nota: você também pode fazer o mesmo na caixa de diálogo TortoiseSVN → Revert. Lá, você também obtém uma lista de todos os arquivos e pastas sem versão para selecionar para remoção.
"Revert all changes recursively"
Este comando reverte todas as modificações locais que ainda não foram confirmadas.
Nota: é melhor usar o comando TortoiseSVN → Revert, porque lá você pode primeiro ver e selecionar os arquivos que deseja reverter.
Switch
Função usada para atualizar uma cópia que esteja local, para uma nova URL sem precisar baixar tudo novamente (caso essa URL tenha ancestral em comum).
Essa opção é muito utilizada no fechamento do branch da versão, vamos exemplificar para ficar mais simples.
Qualidade informou que o Branch X foi finalizado, e agora o Y está disponível, vamos adotar X = 043 e Y = 044.
Se você notar o endereço do Branch 043 e 044, a diferença será "044-Caso-0044492" e a estrutura das pastas são iguais.
Então, ao invés de excluir a pasta referente ao Branch da Versão que está no seu diretório local, e baixar outro do 0, você pode usar o Switch e economizar tempo.
Veja:
Minha pasta que aponta para o Branch da versão, neste momento está para o Branch 043
Clique com botão direto TortoiseSVN -> Switch...
Veja que a tela que se abre, está com endereço URL do branch 043, vamos alterar o final, colocar Fully recursive e dar OK, pode notar a diferença entre Source URL e Destination URL
Note que o tempo gasto é muito menor comparado a baixar todo o código fonte da nova versão.