sexta-feira, 9 de setembro de 2011

Mercurial e bitbucket

Olá amigos e amigas tudo bem? Hoje vou falar sobre algo que abrange muito mais que uma tecnologia. Hoje eu vou falar sobre o controle de versão MERCURIAL e ainda sobre o serviço bitbucket.

Mas espera ai o que é um controle de versão mesmo? Para que serve? 
Um sistema de controle de versão (ou versionamento), é um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer. Normalmente ele é mais utilizado pela galera do desenvolvimento de software pois assim tornamos mais controlado o nosso desenvolvimento.



Minha intenção aqui não é explicar controle de versão, mas sim o controle de versão mercurial utilizando o Bitbucket, um serviço para vc armazenar sua aplicação de forma atualizada para produção.

Imagina que hoje você começa a desenvolver um sistema para uma loja de carros, onde nesse sistema sua empresa irá mobilizar 3 programadores...

Análise pronta, MER pronto, ambiente configurado tudo bem legal e agora?
Quem vai fazer o que?
 Como vamos mesclar isso tudo sem perder tempo arrumando conflitos inuteis como acontece com o SVN ?
NÃOOOOOOOOOOOOOOOOOOOOOOOOOOO
PERDER 10 DIAS ARRUMANDO CONFLITOS?
VOU CONTRATAR UM FAXINEIRO DE CÓDIGO
MUDAR DE EMPREGO, MUDAR A VIDA,
MAS RESOLVER COISAS SIMPLES QUE O SVN
NÃO RESOLVE NÃO DA MAISSS
=[


Nossos problemas acabaram, vamos fazer uma breve comparação (a primeira entre o mercurial e o SVN)

Vamos supor que vc e seu colega estejam trabalhando no mesmo arquivo, mas vc em um método e ele em outro... logo são lugares distintos então não tem problema pq quando utilizarmos o controle de versão ele irá mesclar de forma simples não é?

NÃO COM O SVN... ele não está nem ai para isso, mecheu no mesmo arquivo é CONFLITO... então ele te avisa sobre o conflito e vc mescla manualmente (ou deixa o automatico doido dele cagar no código...)
Agora com o mercurial... aaaa com ele não tem problema, basta mandar ele mesclar que ele faz sem problema nenhum... é simples, é indolor e é rápido....

E sabe o que é melhor de tudo? Existe um serviço online na qual vc controla tanto de forma técnica quando burocratica o desenvolvimento da sua aplicação, e ele é o bitbucket.

Então para começar a acompanhar esse artigo vc vai ai nesse site (bitbucket) cria sua conta aproveita e faz o download do mercurial eu espero ok?

Se vc utiliza o LINUX em seu computador então não vai sentir dificuldades, e se usa o WINDOWS (diferente dq a comunidade costuma a dizer) também não hehehe...

Eu não sou fanático, acho os dois S.O. utilizáveis e ao meu ver precisamos conhecer muito bem OS DOIS.

Então vamos la...

Vamos supor que vc tem o projeto do sistema chamado projetoCarros (diretório com tudo dentro).
Depois de feita a instalação do mercurial abre o console(linux) ou o prompt de comando (windows) e acesse esse diretório via comando (cd diretório...).

O primeiro comando que vc irá digitar é o comando para inicializar o projeto com o mercurial e é esse:
hg init

Estou já imaginando que vc tenha arquivos nesse documento então vamos jogar tudo no bitbucket?
adicione os arquivos e faça o commit dessa forma

hg addremove

hg commit -m "Uma mensagem qualquer entre aspas"


Vamos até o bitbucket criar um repositório chamado 'projetoCarros', para criar clique em Repositories > creaty repository .... informe o titulo, descrição e confirme.

agora de volta no seu terminal faça
hg push https://seuusuario@bitbucket.org/seuusuario/seuprojeto

Veja que o comando é hg push e o endereço, logicamente altere ai onde coloquei seuusuario para o seu usuario do bitbucket e seu projeto para o projeto que vc criou. Logo após ele irá pedir uma senha, vc informa e aperta enter, depois é só esperar um pouco que ele irá enviar os dados para o servidor. E pronto, começamos nosso controle de versão com mercurial utilizando bitbucket.
Vou colocar uma pequena lista de comandos aqui

Inserindo alterações (commits)

hg commit

    Enviando as alterações para o repositório

    hg push

      Adicionando arquivos

      hg add nomedoarquivo.ext


      Renomeando arquivos

      hg rename NomeAntigo.ext Nomenovo.ext


      Removendo arquivos

      hg remove nomedoarquivo.ext


      Recebendo as alterações do repositório

      hg pull

      Aplicando as alterações recebidas do repositório

      hg update


        Visualizando a lista de alterações

        hg log

          Outros comandos

          hg -v help
          • Esse ultimo exibe outros comandos disponibilizados pelo Mercurial


          Criando branch (ramificação)

          hg branch nomebranch

          Verificando qual branch estamos

          hg branch

          Fazendo merge com branch  

          hg merge branch

          Listar branches mercurial

          hg branches

          Update em branch

          hg update branch

          Criando um branch remoto

          hg push https://seunome@bitbucket.org/seunome/repositorio --new-branch
          • Para criar o repositório remoto vc precisa estar no repositório que quer criar no servidor ok?

          Existem ainda vários comandos mas a sintaxe do mercurial é bem simples não acham?

          Vou continuar com exemplos do dia dia e explicando em breve como resolver grandes conflitos...

          Posso ressaltar aqui que o mercurial se mostrou muito mais util que o git em algumas situações. Talvez não para mesclar e nem para voltar versão pois isso é muito similar entre os dois... Mas nas questões de deleções de arquivos feitos manualmente... na questão de mandarmos os branches para o servidor e ainda simplicidade com que ele trabalha... Ta eu ainda não sou expert com o mercurial mas ando aprendendo muita coisa interessante nele e estou gostanto muito. Vocês perceberam que no final eu nem falei mais de svn não é? Bem talvez pq o segmento seja TÃO diferente dos dois que achei mais justo comparar com um controle de versão com o nível dele próprio.


          Espero ter ajudado, esclarecido de uma forma ou de outra aspectos iniciais sobre esse controle de versão.

          Antes de fechar algumas coisas interessantes sobre o mercurial...
          1. Pq HG o inicio do comando? Pq hg é o tipo do mercurio na tabela periódica
          2. E pq o bitbucket chamou atenção? Pois em diversos aspectos ele é mais organizado e ainda seu código pode ser fechado (isso é bom quando vc esta fazendo uma aplicação para um cliente) e o melhor? O serviço é gratuito, caso queira trabalhar com mais de 3 desenvolvedores a taxa que eles cobram é muito baixa então vale e MUITO apena.
          3. Outra coisa, pq ele é tão rápido? Escrito em PYTHON eu preciso falar outra coisa? Hehehe...
          Bem amigos, por hoje é isso... Obrigado



          2 comentários: