Plataforma Nuvem

Aplicativos baseados na Internet

Trabalhando no mesmo projeto em várias máquinas

leave a comment »

Hoje em dia está cada vez mais comum uma pessoa utilizar vários computadores diferentes em um mesmo dia. Por exemplo, um desktop no escritório, um notebook em viagens e outro desktop em casa.

Mesmo para quem resolve simplificar a vida e adotar um notebook como solução única, ainda resta uma questão importante, que é manter em um lugar seguro um backup atualizado e versionado dos seus documentos e projetos.

Uma solução interessante que atende a estes cenários é utilizar um sistema de controle de versão distribuído em conjunto com um serviço de backup online. Duas ferramentas que se destacam nestas tarefas são o git (para controle de versão) e o Dropbox (para backup online). As duas juntas são mais um caso em que o todo é maior do que a soma das partes.

A arquitetura básica é a seguinte:

O Dropbox mantém nos servidores deles um espaço particular para você, com os seus arquivos. Neste espaço, você cria um diretório que é um repositório do git, contendo uma cópia versionada dos arquivos do seu projeto. Em cada computador, você conecta ao Dropbox, que vai manter a sincronização automaticamente. Além disso, em cada computador você terá uma área de trabalho local, fora deste espaço sincronizado.

Você trabalha localmente, no sistema de arquivos do seu próprio computador. Quando chega a um ponto em que deseja salvar uma versão do seu trabalho, você simplesmente faz um “commit” (um salvamento) no git e o publica para o repositório git que está dentro da área compartilhada do Dropbox. Por sua vez, o próprio Dropbox irá fazer automaticamente um backup online deste repositório. Quando você for para outro de seus computadores, logo ao ligar, o Dropbox irá automaticamente atualizar este computador a partir do backup central. Portanto, o seu repositório git também será atualizado a partir desta cópia central. Depois, basta atualizar a sua área de trabalho local do git, e ela estará no mesmo ponto em que você salvou no outro computador.

Parece complicado demais para um problema simples? Por exemplo, porque não trabalhar diretamente no diretório que é sincronizado pelo Dropbox, ou por algum serviço semelhante, como o Live Mesh? Você pode fazer isso, mas o modelo git + Dropbox traz vantagens interessantes:

  • Velocidade: Você trabalha em um diretório fora da sincronização online. Portanto não haverá uma sincronização a cada vez que você salvar ou alterar um arquivo, mas somente quando você resolver salvar uma nova versão do repositório inteiro. Isto acelera o trabalho e diminui o tráfego de internet.
  • Integridade: Se você, por exemplo, fechar o notebook, ou perder a conexão WiFi, antes de o Dropbox sincronizar todos os arquivos, o seu repositório ficaria inconsistente, com alguns dos arquivos modificados já sincronizados, e outros em versão antiga. O git garante a integridade: ou o conjunto de atualizações estará disponível, ou o repositório inteiro estará na versão anterior.
  • Versionamento: O Dropbox permite recuperar versões anteriores dos arquivos, mas o git traz recursos de versionamento de primeira linha, muito superiores ao que você teria sem ele.
  • Repositórios distribuídos: O git foi feito para o cenário de trabalho distribuído, não apenas com uma pessoa utilizando vários computadores, mas também com várias pessoas trabalhando colaborativamente em um mesmo projeto, utilizando os recursos de versionamento sem necessitar de conexão permanente a um repositório central.
  • Multi-plataforma: Tanto o git quanto o Dropbox funcionam nas principais plataformas utilizadas atualmente: Windows, Mac e Linux.

Interessado em experimentar? Em primeiro lugar, instale o Dropbox e crie uma conta. O serviço gratuito oferece 2 GB de espaço e se você utilizar o meu link de referência, nós dois ganhamos 250 MB adicionais.

Em segundo lugar, instale o git. Em cada plataforma, a instalação vai ser diferente. Se você estiver no Windows, instale o Git e o TortoiseGit. No Ubuntu, use o aptitude. Em último caso, faça o download.

O git é uma ferramenta poderosa, mas tem uma curva de aprendizado razoável. A página de documentação pode ser um bom lugar para começar a aprender. Aqui eu vou mostrar alguns comandos básicos para trabalhar neste cenário. Vou utilizar como referência a linha de comando do sistema operacional Ubuntu, mas os conceitos podem ser aplicados nas outras plataformas.

Criar o repositório git dentro do Dropbox

cd ~/Dropbox
mkdir git
cd git
mkdir projeto.git
cd projeto.git
git init --bare

Converter um diretório já existente em um repositório local do git

cd ~/Projetos/projeto
git init
git add .
git commit -m "Versao inicial"
git remote add origin ~/Dropbox/git/projeto.git
git push origin master

Salvar alterações feitas localmente

git add .
git commit -m "Versao modificada"
git push origin master

Criar o repositório local em outra máquina

Em um computador sincronizado com o Dropbox, mas sem o diretório local de trabalho:

cd ~/Projetos
git clone -o projeto ~/Dropbox/git/projeto.git
cd projeto
git remote add origin ~/Dropbox/git/projeto.git

Atualizando o repositório local em outra máquina

Para atualizar o diretório de trabalho a partir do repositório central sincronizado pelo Dropbox:

cd ~/Projetos/projeto
git pull origin master

No final, usando o Dropbox para fazer backup online de forma transparente e manter seus computadores sincronizados, e o git para versionar seus projetos e facilitar o trabalho distribuído, você pode ter uma solução gratuita e muito poderosa para manter seus arquivos seguros e acessíveis.

Written by Fernando Correia

20/maio/2010 às 12:50

Publicado em Geral

Tagged with ,

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s