O modelo de desenvolvimento descentralizado do Mercurial pode confundir os novos usuários. Esta página tenta ilustrar alguns conceitos básicos. Veja o Tutorial para instruções passo a passo.

(This page in English: UnderstandingMercurial)

O que é um Repositório

Os repositórios do Mercurial contêm um diretório de trabalho acoplado:

O repositório contém o histórico completo do projeto. Diferente dos SCMs tradicionais, onde há apenas uma cópia central deste histórico, todo diretório de trabalho é acompanhado de uma cópia privada do histórico. Isto permite que o desenvolvimento ocorra em paralelo.

O diretório de trabalho contém uma cópia dos arquivos do projeto em um determinado ponto do tempo pronta para edição (por exemplo, rev 2). Devido às tags e os arquivos ignorados serem serem controlados pela revisão, eles também são incluídos.

Salvando (Committing) Modificações

Quando você submete suas modificações (commit), o estado do diretório de trabalho em relação aos seus pais é gravado como uma nova revisão:

Note que a revisão 4 é um ramo (branch) da revisão, a qual era a revisão no diretório de trabalho. Agora, a revisão 4 é o pai do diretório de trabalho.

Revisões, Changesets, Heads, and Tip

O Mercurial agrupa as modificações relacionadas a múltiplos arquivos um único conjunto atômico de modificações (changesets), as quais são as revisões para o projeto como um todo. Cada uma destas modificações recebe um número de revisão seqüencial.

Devido ao Mercurial permitir o desenvolvimento distribuído em paralelo, estes números de revisão podem ser diferentes entre os usuários. Assim, o Mercurial também atribui para cada revisão um identificador global de modificações (changeset ID). Os Changeset IDs são números hexadecimais de 40 dígitos, mas podem ser abreviados para um prefixo qualquer que não seja ambíguo, como "e38487".

Ramos (branches) e fusões (merges) no histórico das revisões podem ocorrer em qualquer ponto. Cada ramo que não está unido cria uma nova cabeça (head) do histórico de revisões. Aqui, as revisões 5 e 6 são cabeças. O Mercurial considera a revisão 6 como sendo a extremidade (tip) do repositório, a cabeça com o maior número de revisão.

Clonando, Modificando, Mesclando e Obtendo

Vamos iniciar com a usuária Alice, a qual tem um repositório que se parece com este:

O Bob clona este repositório da Alice e obtém uma cópia completa do mesmo (apesar do seu diretório de trabalho ser independente!):

O Bob então submete algumas modificações:

A Alice realiza suas modificações em paralelo:

O Bob então puxa as modificações da Alice para sincronizar seu repositório com o dela. Isto copia todas as modificações da Alice para o repositório do Bob:

Devido à revisão g da Alice ser mais nova que as revisões do repositório do Bob, esta agora passa a ser a extremidade (tip). O Bob então faz um merge o qual combina as últimas modificações nas quais ele estava trabalhando em (f) com o tip, submete o resultado e termina com:

Agora, Alice puxa de Bob suas modificações e obtém e, f e h, e estará totalmente sincronizada:

Um Sistema Descentralizado

O Mercurial é um sistema completamente descentralizado e portanto não tem nenhuma noção interna de repositório central. Assim, os usuários são livres para definir suas próprias topologias para compartilhar as modificações (veja CommunicatingChanges):

Para uma introdução prática de como utilizar o Mercurial, veja o Tutorial.


CategoryBrazilianPortuguese

BrazilianPortugueseUnderstandingMercurial (last edited 2008-02-12 20:29:08 by WagnerBruna)