Tutorial iOS – Utilizando controle de versão GIT local no XCode

On 27 de setembro de 2014 by Conrado Carneiro

Seja desenvolvendo sozinho ou em time se você não usa controle de versão, deveria!
Quantas vezes já não se deparou com situações que você tinha uma determinada função em seu código funcionando e devido alguma atualização ela parou de funcionar?! Pois é, utilizando controle de versão é possível salvar seu código a cada nova alteração, sendo possível recuperar uma versão anterior caso a atual esteja com problemas.

Começando um projeto com Controle de Versão

Você deve criar um novo projeto, conforme já ensinamos aqui anteriormente.

Captura de Tela 2014-09-07 às 11.50.19Porém, antes de salvar o arquivo, certifique-se que o campo “Create git repository on My Mac” esteja marcado no momento de selecionar a pasta onde irá salvar.

Captura de Tela 2014-09-07 às 11.53.44

 

Neste momento, o XCode irá criar um repositório GIT vazio e vai usar a base de arquivos do seu projeto como seu primeiro commit.

Todos os sistemas de controle de versão, incluindo o Git, armazenam seus dados em um repositório para que possa gerenciar suas versões de projeto e manter o controle de alterações em todo o ciclo de desenvolvimento. Então pense em um repositório como um banco de dados para versões.

Podemos acompanhar o histórico de modificações no projeto da seguinte forma, vá até o menu Source Control em seguida History, conforme indicado a seguir.

Captura de Tela 2014-09-07 às 12.04.02

 

Você poderá visualizar os arquivos que foram alterados desde o ultimo Commiti

Captura de Tela 2014-09-07 às 12.05.03

Se você clicar para exibir os arquivos alterados será possível acompanhar o antes e o depois de cada arquivo, de forma bem organizada e detalhada.

Agora vamos experimentar fazer algumas alterações no código, por exemplo, adicionar um NSLog no arquivo ViewController.m na função ViewDidLoad

Captura de Tela 2014-09-07 às 12.08.48

Repare que uma “Badge” com a letra M apareceu ao lado do nome do arquivo que você alterou no menu a esquerda do XCode.

Captura de Tela 2014-09-07 às 12.10.16

A letra M significa que o arquivo foi modificado e está diferente da ultima versão “comitada” no controle de versão. Antes de realizar o Commit vamos fazer uma pequena modificação na interface do aplicativo, no arquivo Main_iPhone.storyboard. Podemos acrescentar um botão ou um texto, tanto faz. Precisamos apenas fazer alguma modificação e ao final da modificação espera-se que o arquivo da storyboard também apresente uma “badge” com a letra M.

Fazendo um commit

Fazer um commit é fácil, basta ir em Source Control -> Commit uma tela comparando as mudanças realizadas será exibida, similar a image a baixo:

Captura de Tela 2014-09-07 às 12.19.25

O código apresentado a esquerda corresponde as informações antigas, já existentes no controle de versão. Já as informações da direita são as modificações realizadas e que serão armazenadas no controle de versão.

Antes de realizar o commit é necessário que uma mensagem seja escrita, geralmente coloca-se uma informação referente ao que foi alterado no código, para facilitar na hora de visualizar as versões antigas do código.

Após realizar o commit, verifique que os arquivos no menu do lado esquerdo do seu projeto não apresentam mais a “badge” com a letra M.

Se verificarmos o histórico de commit teremos agora duas alterações, a primeira que foi gerado quando criamos o projeto e essa nova alteração.
Captura de Tela 2014-09-07 às 12.25.10

Branch

Um outro recurso interessante do controle de versão é a possibilidade de criar branch, ou seja, ramos.
Em outras palavras, um ramo é uma versão do seu código com alguma função nova que ainda está em teste, ou ainda está sendo implementada e por isso não deve ser adicionada ao ramo principal (Branch Master) a seguir iremos criar um novo branch, simulando que ele tenha uma nova função.

Primeiro passo é criar uma nova classe,  irei criar uma classe de nome MapaModel com a subclasse NSObject. Ao criar a nova classe repare que a “Badge” com a letra apareceu na frente dos arquivos criados e significa que é um novo arquivo e ainda não foi realizado o commit.

Para criar um novo ramo, basta seguir os passos da imagem a seguir:

Captura de Tela 2014-09-07 às 12.54.08

Escolha a opção New Branch em seguida defina o nome do novo ramo. Ao finalizar a criação do novo ramo, o próximo commit será automaticamente direcionado para ele. Por fim, basta fazer o commit propriamente dito e ele será direcionado para o novo ramo.

Comparando Versões

Depois de ter commitado vária versões em seu projeto, é muito fácil comparar e rastrear as modificações feitas no código. Comparar versões é muito útil quando um código recém adicionado não funciona como esperado, sendo fundamental retornar a um código mais antigo.
Para comparar duas versões basta ir em  View > Version Editor > Show Version Editor, ou clicar no botão Version Editor, existente na tabbar, conforme mostrado a seguir:
Captura de Tela 2014-09-27 às 09.47.26

O editor irá se divider em duas partes. Inicialmente, ambos os painéis de edição (esquerda e direita) mostram a versão atual do arquivo selecionado. Para mudar qualquer um dos dois painéis para uma versão previamente comprometido, vá até a barra de ferramentas abaixo do painel e clique no último botão, a imagem do relógio:

t10_22_select_previous_versions

Imediatamente, todas as alterações que correspondem ao período que foi selecionado serão exibidas na tela. Normalmente, o painel da esquerda é usada para a versão atual do arquivo, enquanto o da direita é usado para acessar uma revisão anterior. As áreas azuis, indicando os códigos modificado, e que faz rastreamento de adições de código de forma realmente fácil e objetiva. Então, vá em frente e selecione um período de edição e observe as diferenças exibidas entre os dois painéis.

t10_23_versions_compare

Como podemos observar, entre os dois painéis do editor existem as etiquetas redondas vimos pela primeira vez na janela de confirmação. Clicando na seta para baixo existente em qualquer uma delas, a opção de descartar as respectivas alterações é exibida. Se você clicar, Xcode irá pedir a sua confirmação e, se concordar, o código selecionado será descartada para sempre, sem qualquer chance de recuperá-lo. Portanto, tome cuidado para não descartar qualquer pedaço de código, mesmo que acidentalmente.

Além da forma apresentada acima, há mais um que você pode usar para voltar para revisões anteriores. Se você olhar atentamente para a barra de ferramentas abaixo dos dois painéis, no meio dela, há um botão com um relógio e uma seta.

Se você clicar nesse relógio com uma seta, a coluna entre os dois painéis fica alterada e os rótulos são substituídos por uma série de marcas de tempo em que foram feitos todos os commits anteriores. Note que nem todos eles representam um commit real, o número real dessas formas retangulares arredondadas correspondentes às versões anteriores, depende da quantidade de commits.

No próximo tutorial sobre GIT iremos abordar assuntos como: Criar novo Branch, fazer merge de Branchs  e aprender a descartar mudanças. Até a próxima!

One Response to “Tutorial iOS – Utilizando controle de versão GIT local no XCode”

  • Boa noite pessoal.

    Bastante interessante o recurso GIT para controle de versão local.

    Pergunta:

    1 – com o Xcode é possível realizar o controle de versão online? (permitindo + que 1 programador utilize os mesmos códigos e realizem alterações e façam o commit, tipo Tortoise SVN).

    1.1 – No caso o item 1 não sendo possível. É permitido compartilhamento do projeto em rede local? com a equipe?

    2 – não encontrei o próximo tutorial citado acima, onde: “Criar novo Branch, fazer merge de Branchs e aprender a descartar mudanças. ”

    Excelente Post!!! parabéns e até.

Deixe um comentário

O seu endereço de e-mail não será publicado.