SVN - Básico

Rotinas comuns e processos básicos do 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".

image-1610113649470.png

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).

Checkout Legendado.png

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:

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":

Merge4 (2).png

Será aberta a tela "Merge Type", selecione a opção "Merge a range of revisions" e em seguida clique em "Next":

5.jpg

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":

SVN_Merge.png

Na tela "Merge options", em "Merge depth" selecionar a opção "Fully recursive" e em seguida clicar em "Test merge":

7.jpg

 Após o "Test merge" ter sido completado e caso não seja apresentado nenhum conflito, clique em "OK":

Merge2.png

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":

Merge1.png

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.

Screenshot_32.png

Navegue até o diretório Origem(de onde quer copiar).

Botão direito, "Copy To".

Screenshot_33.png

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.

Screenshot_34.png

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...".

image-1610115872815.png

 

Feito isso, a seguinte tela será aberta. 

image-1610122972706.png

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;

Help menu de ajuda sobre a ferramenta. 

 

 

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.

Screenshot_39.png

Aguarde o processo terminar e aperte em "OK".

Screenshot_40.png

Show Log

Show Log é utilizado para ver as modificações que o diretório/arquivo sofreram, como forma de histórico.

Para acessar, 

Screenshot_41.png

 

Ao ser aberto, a página trás as últimas 100 revisões "revisions", mas poderá aumentar os resultados através de:

Screenshot_42.png

  1. Buscará desde o primeiro registro existente.
  2. 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.

Screenshot_43.png

Com a tela que se abre é possível navegar entre as pastas e fazer ações com Show Log

 

Screenshot_45.png

  1. 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:  

Cleanup_ExemploUnits.png

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.

 

image-1610454861551.png

 

A seguinte tela será aberta com todas a opções de limpeza para deixar sua cópia de trabalho em um estado limpo.

image-1610458585101.png

As opções mais comuns e utilizados são: 

image-1610458686668.png

"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.

47.png

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

48.png

Clique com botão direto TortoiseSVN -> Switch... 

49.png

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 Destination URL

50.png

Note que o tempo gasto é muito menor comparado a baixar todo o código fonte da nova versão.

51.png

Fluxo trabalho SVN

Controle-de-Versões-Supersoft-ERP.png