Como utilizar o SVN com Unity e garantir rastreabilidade total de alterações em seu código fonte

0 Flares 0 Flares ×

svn-unity-como-utilizar

Se você é um desenvolvedor, seja em C#, VB.NET ou qualquer outra linguagem, e ainda não usa nenhum tipo de Sistema de Controle de Versão de Código Fonte eu recomendo que você faça isso já, pois são ferramentas poderosíssimas que irão aumentar muito a sua produtividade individual, e de sua equipe, bem como a rastreabilidade de alterações em seus códigos fontes.

Existem diversas opções de sistemas de controle de versão de códigos fontes como: SVN (Subversion), GIT, CVS, Mercurial e outros. Você pode ler sobre as características de cada um aqui.

Eu já trabalhei com diversos deles e prefiro o SVN. Existem diversas empresas que oferecem serviços de servidor SVN. Eu uso o Wush.net há mais de 8 anos, e desde a Game Jam que rolou entre os membros da Academia de Produção de Jogos, venho usando juntamente com o Wush, o Assembla, que também vem se mostrando estável e possui alguns planos gratuitos.

 

Como usar o SVN

Neste artigo vou explicar como você deve proceder para começar a usar o SVN, desde a criação da conta no servidor, até algumas operações básicas. No próximo, irei apresentar algumas operações avançadas que você pode realizar para extrair o máximo destes produtos.
O primeiro passo é criar uma conta em Servidor de SVN, e como exemplo, vou utilizar o Assembla, que oferece repositórios gratuitos:
Acesse a URL https://www.assembla.com/workspaces/repositories-features e entre na opção de repositórios gratuitos, conforme indicado nas figuras abaixo:

 

svn-e-unity instalar-svn

Você será redirecionado para criar uma conta:

criar-conta-svn

Você deve escolher entre SVN, GIT e P4, mas como este artigo fala sobre SVN sugiro que você escolha SVN.

Cadastre um nome para o repositório e prossiga.

repositorio-snv-jogos

Quando o repositório for criado você será redirecionado para seu DashBoard, de onde é possível manipular os arquivos, mas eu prefiro trabalhar com um cliente para Windows (TortoiseSVN) integrado ao Windows Explorer, que trataremos seguir.

criando-sistema-controle

Se você clicar na opção HOME tem a oportunidade de convidar outros usuários do assembla a fazerem parte de sua equipe, sendo que esta é uma das principais vantagens de se usar o SVN, pois com ele, é possível que 2 ou mais programadores trabalhem no mesmo arquivo ou então na mesma “function”.

codigo-fonte-unity6

Configuração de um cliente SVN em seu PC – TortoiseSVN 

Depois de criar a conta no servidor você precisará configurar um cliente SVN em seu PC. Entre no site https://tortoisesvn.net/downloads.html faça o download de um SVN Client de acordo com a versão do Windows instalada em seu PC (32 ou 64 bits).

configuracao-cliente-svn

Faça a instalação padrão e reinicie o computador (Não pule esta etapa).

Abra o Windows Explorer e clique com o botão direito em uma pasta (preferencialmente vazia) onde você deseja guardar o seu código fonte e verifique que novos ícones foram adicionados para o uso do SVN.

instalando-snv-pc8

O SVN irá criar uma estrutura inicial de pastas, e inicialmente eu sugiro que você não a altere. Para fazer o download dos arquivos iniciais do SVN acesse a opção SVN Checkout do menu e você verá uma tela semelhante à da figura abaixo:

Preencha com os dados de sua conta e pastas:

janela-instalacao

Ao clicar em OK o cliente irá solicitar usuário e senha (eu sugiro que você salve a senha em seus PC, pois em um projeto serão milhares de updates e commits):

autenticacao-svn

O SVN irá fazer o download das pastas, sendo que após concluir esta etapa você terá uma estrutura inicial conforme a figura abaixo:

estrutura-pc

Algumas informações sobre as pastas da figura acima:

  • Branches: é a pasta onde você deve armazenar diferentes versões de seus projetos.
  • Tags: é a pasta onde você deve armazenar versões congeladas de seus projetos. Exemplo: Versão do game que foi para a Google Play Store no dia 5/1. Esta versão deve ser congelada numa pasta Tags, para que você tenha uma cópia fiel dos fontes no dia que foram publicados. Nunca altere o conteúdo de arquivos da pasta TAG.
  • Trunk: Seria a pasta principal do projeto, mas não iremos utiliza-la neste momento, pois usaremos a pasta Branches.

Eu ainda irei detalhar melhor o conceito de branches, tags e trunk em um artigo futuro onde falarei de Integração contínua.

Trabalhando com Unity e SVN

Vou criar um projeto exemplo usando a Unity, que é uma das game engines mais utilizadas por desenvolvedores. Veja que a localização dos arquivos é a pasta Branches criada anteriormente.

unity-svn

Assim que o projeto for criado, o Unity irá criar a seguinte estrutura de pastas:

pastas-unity

Agora, com as pastas criadas é preciso adiciona-las ao SVN. É importante salientar que as pastas e arquivos foram criados pelo Unity e estão localizados fisicamente em seu computador. Assim sendo, o repositório de dados ainda não possui uma cópia deles. Para isso, clique com o botão direito na pasta de seu projeto, depois clique em TortoiseSVN e em Add:

configuracao-svn-unity

Você terá uma imagem semelhante à da figura abaixo (Vá com calma e NÃO Clique em OK antes de ler os próximos parágrafos):

instalando-snv-jogos

O Unity cria algumas pastas temporárias que não devem ser adicionadas ao SVN pois são alteradas frequentemente e causam muitos conflitos de arquivos (falaremos disso depois)

Desabilite a checkbox da pastas “Library” e “Temp”:

rastreabilidade-codigo-fonte

rastreabilidade-codigo-jogo17

Agora clique em OK. Você verá uma tela semelhante à da figura abaixo, mas seus arquivos ainda não estão na nuvem. Este processo simplesmente criou uma serie de arquivos e pastas temporárias que auxiliarão o TortoiseSVN a gerenciar seus arquivos. Por padrão eles são criados dentro de pastas com o nome .svn ou _svn.

 

codigo-fonte-svn

Commit

Depois de adicionados, a etapa final para enviar os arquivos para a nuvem é “comitar o codigo”. Para fazer um Commit, clique com o botão direito na pasta com o botão direito e selecione SVN Commit.

comitar-codigo-svn

Neste ponto o usuário recebe uma janela indicando quais são os arquivos que podem ser “comitados” e existe uma caixa de texto para adição de uma mensagem.

Eu recomendo que você SEMPRE escreva alguma mensagem útil nesta caixa, já que futuramente isso poderá ser utilizado para rastrear mudanças no código fonte e resolver problemas de conflitos.

comit-codigo-svn

A etapa final é clicar em OK:

estrutura-comit21

Adicionando novos arquivos

Numa situação real, novos arquivos sempre serão inseridos em seu projeto. Para exemplificar criei uma pasta Scripts contendo um script C# teste chamado GameManager. Veja no Unity:

arquivos-svn-unity22

E no Windows Explorer:

adicionar-arquivos-svn

SVN/ADD

Para adicionar os novos arquivos ao SVN, clique com o botão direito do mouse na pasta, depois em TortoiseSVN e Add.

SVN/Commit

Finalmente, para “comitar” os arquivos, clique com o botão direito do mouse na pasta, depois em SVN Commit.

Alterando arquivos

Uma função muito interessante do SVN é gerenciar alterações em arquivos. Para exemplificar eu Editei o script C# usando Visual Studio, e assim que o arquivo foi salvo, um ícone de Exclamação aparece ao lado esquerdo do arquivo. Isso indica que você possui código alterado e não “comitado”.

alterar-arquivo-svn

Caso você queira conferir o que foi alterado antes de fazer o Commit, você pode clicar com o botão direito no arquivo, e no menu do SVN selecione uma opção chamada Diff. O TortoiseSVN instala em seu PC uma poderosa ferramenta de comparação de arquivos chamada WinMERGE. Esta ferramenta irá buscar a última cópia de duas alterações e comparar com o arquivo local exibindo um ao lado do outro, conforme a figura abaixo:

winmerge-svn

Caso você tenha certeza que suas alterações estão corretas, basta fazer o commit e seu código irá para a nuvem, juntamente com todo o histórico de alterações feitas anteriormente.  

Considerações Finais

Neste artigo vocês puderam ver um pouco de como funciona o SVN.

Na próxima semana, vocês irão receber a segunda parte, mostrando recursos avançados, e também vou mostrar como eu uso esta ferramenta, juntamente com um BugTracker e um gerenciador de Tempo (Toggl – https://www.toggl.com) para criar uma estrutura de rastreabilidade de tempo, escopo de alterações, e custo em meus projetos.

Para finalizar, deixarei algo para discutirmos: eu venho usando SVN hospedado na nuvem há mais de 10 anos.

Fui questionado algumas vezes por clientes e parceiros comerciais em relação a confidenciabilidade e segurança dos dados na nuvem.

O que você pensa sobre isso ?
Você hospedaria seus projetos em algum destes servidores que eu citei?   

Se tiver duvidas não deixe de escrever nos comentários.

Até o próximo post! =)