Programando em Equipe na Unity: Exemplos Práticos de uso do SVN

0 Flares 0 Flares ×

No artigo Como utilizar o SVN com Unity e garantir rastreabilidade total de alterações em seu código fonte eu mostrei como criar uma conta em um servidor SVN, e também viram algumas operações básicas como checkout, update e commit.

Neste post vou continuar a falar sobre o SVN na game engine, mostrando outros exemplos de recursos que vocês utilizarão com frequência, e, no final vou mostrar como eu uso o SVN no dia a dia para rastrear tempo/ custo e escopo de alterações.

Uso de SVN por equipes

Um recurso poderosíssimo do SVN é a possibilidade de se trabalhar em equipe, pois ele possui ferramentas que fazem a junção de trabalho de vários programadores (merge) consolidando todas as alterações e eliminando trabalho braçal.

Veja o exemplo abaixo:

Num projeto Unity com C# temos 2 programadores trabalhando na mesma class: Player.cs

O primeiro programador cria o script pelo Unity, faz um ADD no SVN e depois um COMMIT (se você não sabe do que estou falando, veja esse artigo primeiro). O segundo programador recebe automaticamente um e-mail do Assembla dizendo que a classe Player.cs foi “Comitada” pelo programador 1. Ambos combinam que irão trabalhar na mesma classe, porém em funcionalidades diferentes.

O programador 2 faz um checkout completo do projeto e começa a trabalhar simultaneamente ao programador 1.

O programador 1 faz as seguintes alterações e está pronto para fazer um commit de seu trabalho:

Antes de fazer Commit o programador 1 confere suas alterações. Esta é uma etapa importante, pois garante que a cópia dos fontes da nuvem não irá receber arquivos errados ou alterações erradas.

O programador 2 está trabalhando na mesma class, e faz outras alterações:

Perceba que ambos fizeram alterações no mesmo arquivo. Agora, o programador 2 também quer “comitar” seu código e faz uma checagem de suas alterações:

Mas Antes de “comitar”, uma regra importante a seguir é sempre fazer um SVN UPDATE, para garantir que a última versão do código está disponível em seu PC.  Ao fazer o Update, o SVN irá fazer um merge das alterações feitas na classe e isso poderá ser facilmente verificado na tela de output:

Ao fazer novamente um DIFF veja que o código do programador 1 já aparece no arquivo, enquanto somente as alterações do programador 2 aparecem destacadas em amarelo:

LOG

A Log é outro recurso muito utilizado do SVN. A qualquer momento você pode clicar em uma pasta, ou arquivo e usar a opção Show Log. Você terá acesso a todas as modificações feitas no arquivo desde a data de sua inclusão (ordenadas decrescente por data). No exemplo usado neste artigo Programador 1 usa o login rogerio_ranieri e programador 2 usa o login spoxgamestudio.

Você pode clicar com o botão direito em cada uma das linhas da log e verificar cada uma das mudanças que foram realizadas e ter rastreabilidade total em seu código. Neste ponto, volto a salientar a importante de se cadastrar mensagens junto com os commits. Se isso não for feito a log irá conter uma serie de datas, mas ficaria praticamente impossível encontrar algo.

As alterações também podem ser vistas de forma consolidadas usando o recurso Blame. Veja na figura abaixo que as alterações do programador 1 aparecem em verde, enquanto as do programador 2 em vermelho. Ao se passar o mouse sobre as alteracoes a mensagem de commit do SVN irá aparecer como tooltip.

SVN no meu dia-a-dia

Agora que mostrei para vocês um pouco da funcionalidades básicas do SVN quero mostrar um exemplo prático que uso em meu dia a dia para controlar as alterações dos projetos que participo.

Este é um exemplo de uma alteração em um ERP que está em produção há cerca 10 anos em um cliente (os dados apresentados neste artigo foram alterados por dados fictícios).

  1. Todas as requisições de alterações do cliente são cadastradas em um ticket manager. Eu gosto muito do https://freshdesk.com/ pois possui uma interface que pode ser configurada, é escalável em termos de preços, possui versões gratuitas e apps para celular.

O registro é feito com o seguinte título:

Ticket 43322/2015 – Alterações relativas a Nota Técnica 2015/003

Este ticket irá acompanhar a requisição de alteração até a emissão da fatura.

  1. Todo o tempo gasto com o projeto é computado numa ferramenta chamada Toggl, que também é fremium. No final do projeto eu consigo extrair um relatório de tempo desta ferramenta, indicando quanto foi consumido no ticket.

Quando as alterações são concluídas o programador comita seu código e coloca o mesmo número do ticket na tela de mensagens do SVN:

E isso me dá rastreabilidade nos projetos. Se uma fatura de serviços é questionada, com o número do ticket eu sei quem foi programador que comitou o código, sei quais linhas dos programas foram alteradas, quais arquivos foram impactados, sei quem solicitou, quem aprovou, quem testou, quanto tempo foi consumido entre outras coisas.

Considerações finais

Existem inúmeros recursos no SVN que podem ser combinados com outras ferramentas trazendo diversos benefícios para a equipe do projeto.  Pretendo a falar mais sobre eles nos próximos posts.

Agora eu quero saber de você…

Como você faz atualmente para programar em equipe? Você já usava um sistema como o mostrado nesse artigo? Se não, está pensando em utilizar?

Me conte nos comentários!

E se você quer se aprofundar no desenvolvimento de jogos, não deixe de participar de uma aula online com o Raphael Dias! Você pode se inscrever por meio deste link.

  • Deiverson Silveira

    Muito bom artigo! A maior dificuldade que encontro em trabalhar em equipe é referente a falha de comunicação (seja minha ou dos meus colegas)… Se não tiver tudo bem comunicado, o processo não funciona de maneira produtiva! []´s

  • Paulo Rubens

    Ótimo artigo! Eu estou começando a carreira, já trabalho com TI a 7 anos e utilizo o SVN nos meus estudos e no trabalho, estas dicas dadas neste artigo são extremamente úteis para quem pretende trabalhar em equipe usando o SVN

  • Darth Dodgers

    Olá Rogerio, bacana seu artigo, já trabalho com desenvolvimento web utilizando o GIT que tambem é um versionador de códigos assim como o SVN, mas minha dúvida é a seguinte: Como versiona as alteraçoes feitas dnos prefabs? Exemplo, a criaçao de uma cena, como faria para versionar isso? Pois seu artigo explica como versiona o script usado no desenvolvimento do jogo, minha duvida é em relação as coisas fora disso. Grato