Usando GIT e GITHUB pra versionamento e colaboração de código T-SQL

Fala galera, uma coisa que é bastante comum de acontecer é escrever um código T-SQL pra resolver um problema e ficar alterando este código no decorrer do tempo. Muita gente acaba versionando o código duplicando arquivos dentro dos diretórios e modificando os nomes com V1, V2, V3, …, V508. Isso é péssimo, a gente nunca sabe qual arquivo estava o código correto que usamos no passado e que foi modificado pra versão atual do que estamos fazendo, sem contar também que pode-se ter problemas de apagar o arquivo localmente, ou pior, o disco da sua máquina de desenvolvimento que contém estes códigos pode dar problema e você perde tudo o que fez.

Uma solução para estas situações é usar algum tipo de versionamento de códigos, já mostrei aqui como usar o TFS pra versionar seus projetos no servidor. Hoje vou mostrar como usar o GIT e o GITHUB pra versionar os códigos T-SQL de seus scripts. O versionamento além de permitir que os comentários das publicações do código sejam feitos, também é possível compartilhar estes projetos com outros usuários e ter uma colaboração no seu código. Podem ter colegas trabalhando no mesmo código e será possível ver as alterações que cada um fez no arquivo.

Bom, a primeira coisa a se fazer é criar uma conta no GITHUB, para isso, acesse o site http://github.com e preencha seu cadastro. O Github será o seu repositório e controlador na internet. É seguro e muito utilizado por grandes empresas, então se você tem algum medo com relação à segurança, pode ficar um pouco mais tranquilo.

Existem dois tipos de contas, uma gratuita (e aberta) e uma paga (e privada). Quando você escolhe que sua conta será aberta (gratuita) todos os usuários podem ter acesso à seus códigos, inclusive podendo copiar seus scripts mesmo sem precisar pedir autorização. Já quando é uma conta privada (paga) você gerencia os acessos, permitindo que somente as pessoas X, Y ou Z possam acessar a pasta pra ver os arquivos, podem ler os documentos ou podem ter acesso à fazer modificações. Isso vai ficar de acordo com sua necessidade. No meu caso, possuo na mesma conta alguns projetos gratuitos e outros pagos. Os gratuitos vocês conseguem enxergar, acessando o link: https://github.com/diegonogare

Após criar sua conta no Github, você precisa baixar e instalar o GIT. Acesse http://git-scm.com/download/win e faça o download do Git Bash, que é uma aplicação console (em linha de comando) que fará a comunicação com sua conta no Github. É através do Bash que você se conecta a um repositório, pega a ultima versão do arquivo, faz upload do seu código para o repositório, consegue encontrar as versões dos códigos que foram publicados, entre outras atividades. É através dele que você gerencia toda a comunicação com o servidor de código.

Existem bastate linhas de código pra você interagir com o GITHUB através do Git. Veja abaixo a sequência de códigos mais comuns, e sua aplicabilidade:

  1. Criar o repositório no Github que receberá seus códigos;
  2. Conectar a pasta local com o repositório do servidor;
  3. Acessar a pasta onde tem seu arquivo que deseja criar o versionamento;
  4. Verificar o status dos arquivos existentes nesta pasta (opicional);
  5. Adicionar o arquivo desejado (ou todos) para dentro do GIT, ainda localmente;
  6. Fazer o commit do arquivo, adicionando os comentários que ficam atrelados aos arquivos;
  7. Fazer o envio do arquivo pro servidor do GITHUB.

Para exemplificar o processo, vou criar uma pasta com o nome de SCRIPT dentro do C:\TEMP no meu computador. Nesta pasta vou criar um arquivo chamado BlogDoNogare.sql que vai receber um comando qualquer, vou subir este código pro Github, depois vou alterar o código localmente e subir novamente pro Github. Por fim, vamos encontrar o código no portal web e visualizar o versionamento.

 

Passo 1 – Criar a pasta no Github que receberá seus códigos. Para isso, acesse o Github após seu registro e clique em criar novo repositório. Este repositório, na literatura, é chamado só de “Rep”.

Passo 2 – Após criar o diretório no Github, na página seguinte da criação aparecem alguns códigos. Mantenha essa página aberta ou copie estes códigos para um bloco de notas, vamos usar em breve.

Passo 3 – Agora abra o Git Bash pra conectar a pasta local com o servidor.

Passo 3.1 – Vá até a pasta que receberá seus arquivos. No meu caso, C:\Temp\Script. O comando LS retorna a lista de objetos dentro da pasta.

Passo 3.2 – Use o comando Git Init pra criar uma estrutura interna nesta pasta, e permitir que o Git (local) faça o gerenciamento desta pasta e sub-pastas.

Passo 3.3 – Coloque o primeiro arquivo dentro da pasta. No meu caso, é só um arquivo chamado BlogDoNogare.sql com o código SELECT @@VERSION. Faça isso com o próprio SQL Server Management Studio.

Passo 3.4 – Adicionar o arquivo, ou conjunto de arquivos, para o Git (local) contabilizar e versionar. O comando GIT ADD faz isso, se você especificar o nome do arquivo, só este arquivo é adicionado ao controle de versão neste momento, se você especificar . [ponto], todos os arquivos que foram alterados serão marcados com a flag pra versionar. No meu caso, espeficiquei o nome, digitando GIT ADD BlogDoNogare.sql

Passo 3.5 – Opicionalmente você pode utilizar o comando Git Status pra coletar mais detalhes do que tem de alteração na pasta. Existem 3 cores que os nomes dos arquivos podem aparecer. Vermelho significa que o arquivo está alterado e ainda não foi versionado esta alteração. Amarelo significa que foi alterado e está versionado, mas ainda não foi pro servidor. Verde significa que foi versionado e está no servidor. Depois que você enviar pro servidor e alterar o arquivo localmente, ele volta a ficar vermelho e segue esta ordem de cores novamente. Novos arquivos também ficam verdes, mesmo sem ter sido enviado pro servidor.

Passo 3.6 – É momento de marcar os arquivos que foram adicionados neste versionamento para enviar ao servidor. O comando Git Commit –m “sua_mensagem_aqui” coloca esta comentário que fica entre aspas para todos os objetos que serão enviados pro servidor. Possibilitando que este comentário seja visto no Github. No meu caso, coloquei o comentário “Retorna a versão do SQL Server”.

Passo 3.7 – Lembra daqueles códigos que a gente copiou da página do Github logo após a criação do repositório? Então, aqui é hora de usar a primeira linha daquele código. Ela é responsável por conectar esta pasta com o servidor. Após inserir esta linha, vai lhe pedir o usuário e senha, é o mesmo que você usou pra se registrar no Github. Esta ligação é feita uma única vez, e geralmente é na primeira vez. Depois, quando você precisar mudar o repositório de destino, você precisa rodar novamente estes códigos, mas é só quando muda o destino lá no servidor.

Passo 3.8 – Agora já temos o diretório local criado, o arquivo marcado para ser controlado, e a pasta conectada com o servidor. O próximo e ultimo passo é enviar o arquivo fazendo um push. Para fazer isso, basta usar aquele segundo comando que foi apresentado na página do Github.

Passo 3.9 – Pronto, seu arquivo está no servidor. Se você voltar ao Github e atualizar a página, já será possível encontrar seu arquivo publicado e com o comentário que você criou.

Vamos alterar o arquivo local, e ver o comportamento dele no servidor?

Passo 4 – Altere o código do seu script de SELECT @@VERSION para SELECT @@SERVERNAME e salve o arquivo.

Passo 4.1 – Utilizei o comando Git Status para ver o que aconteceu com seus arquivos que estão com a flag pra controle de versão. Veja que agora este arquivo está com a cor vermelha.

Passo 4.2 – Novamente vamos marcar o arquivo para versionamento, isso vai dizer que o código que está no arquivo agora deve ser enviado pro servidor do Github. Faça isso usando o comando Git Add. Lembra que da primeira vez foi usado o nome do arquivo? Então, agora usei o . [ponto] pra adicionar todos os arquivos. Como só existe um arquivo na pasta, só ele será marcado.

Passo 4.3 – O passo seguinte é realizar o commit dos arquivos. Usando o código Git Commit –m “Retorna o nome do servidor”, eu informo o comentário relativo à alteração que tem no arquivo.

Passo 4.5 – Pra finalizar, é necessario enviar os arquivos que foram “commitados” para o servidor. Faça isso usando o Git Push. Como já foi feita a primeira ligação entre a pasta e o servidor, pode usar somente o Git Push sem informar que é na branch master. A não ser que você tenha criado uma nova branch. Mas não é nosso caso, estamos trabalhando no padrão, que é a Master. Mais uma vez você precisa informar o Usuário e a Senha do Github.

Pronto, agora seu arquivo no Github já está alterado e pode ser visto todo o histório de alterações, tal qual com seu comentário para facilitar a identificação das alterações.

Estes comandos em GIT são bem básicos mas já permitem que seus códigos T-SQL possam ser versionados e você consiga compartilhar isso com outros colaboradores. Lembre-se de que existem duas contas do GIT, uma gratuita e uma paga. Esta que criamos aqui é gratuita, mas para os códigos da sua empresa, é altamente recomendado que seja uma paga (pra evitar vazamento dos códigos). A não ser que você queria que a galera tenha acesso à seus códigos 🙂

Para aprender com muito mais detalhes a trabalhar com GIT + Github, vale dar uma olhada nestes cursos:

[Pago – Em português] Git e Gthub para desenvolvedores .NET

[Gratuito – Em inglês] GIT REAL

Sobre Diego Nogare 350 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.