Differences between revisions 17 and 18
Revision 17 as of 2009-04-29 22:03:39
Size: 11287
Editor: WagnerBruna
Comment: sync with English version and code translation
Revision 18 as of 2009-05-19 19:30:57
Size: 11313
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
Veja o [:BrazilianPortugueseTutorial:Tutorial] para instruções passo a passo. Veja o [[BrazilianPortugueseTutorial|Tutorial]] para instruções passo a passo.
Line 11: Line 11:
[[TableOfContents]] <<TableOfContents>>
Line 15: Line 15:
Os [:Repository:repositórios] do Mercurial contêm um [:WorkingDirectory:diretório de trabalho] acoplado a um armazenamento de histórico: Os [[Repository|repositórios]] do Mercurial contêm um [[WorkingDirectory|diretório de trabalho]] acoplado a um armazenamento de histórico:
Line 44: Line 44:
Ao contrário dos [:SCM:SCMs] tradicionais, onde há apenas uma cópia central deste histórico, Ao contrário dos [[SCM|SCMs]] tradicionais, onde há apenas uma cópia central deste histórico,
Line 49: Line 49:
O arquivo de [:Tag:etiquetas] e o arquivo de padrões de arquivos ignorados ([:.hgignore]) também fazem parte do diretório de trabalho, e também são armazenados no repositório. O arquivo de [[Tag|etiquetas]] e o arquivo de padrões de arquivos ignorados ([[.hgignore]]) também fazem parte do diretório de trabalho, e também são armazenados no repositório.
Line 53: Line 53:
Quando você consolida suas modificações (usando o comando [:Commit:commit]), o estado do diretório de trabalho em relação aos seus [:Parent:pais] é gravado como um novo [:ChangeSet:changeset] (também chamado de uma nova [:Revision:revisão]): Quando você consolida suas modificações (usando o comando [[Commit|commit]]), o estado do diretório de trabalho em relação aos seus [[Parent|pais]] é gravado como um novo [[ChangeSet|changeset]] (também chamado de uma nova [[Revision|revisão]]):
Line 86: Line 86:
O Mercurial reúne mudanças relacionadas de vários arquivos em conjuntos atômicos de modificações ([:ChangeSet:changesets]), que são as revisões para o projeto como um todo.
Cada uma destas modificações recebe um [:RevisionNumber:número de revisão] seqüencial.
O Mercurial reúne mudanças relacionadas de vários arquivos em conjuntos atômicos de modificações ([[ChangeSet|changesets]]), que são as revisões para o projeto como um todo.
Cada uma destas modificações recebe um [[RevisionNumber|número de revisão]] seqüencial.
Line 90: Line 90:
Assim, o Mercurial também atribui a cada revisão um [:ChangeSetID:identificador de changeset] global. Assim, o Mercurial também atribui a cada revisão um [[ChangeSetID|identificador de changeset]] global.
Line 119: Line 119:
Ramos ([:Branch:branches]) e mesclagens ([:Merge:merges]) no histórico das revisões podem ocorrer em qualquer ponto. Cada ramo não mesclado cria uma nova cabeça ([:Head: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 [:Tip:tip] (extremidade) do repositório, a cabeça com o maior número de revisão.
A revisão 4 é um [:MergeChangeset:changeset de mesclagem], pois possui ''dois'' changesets pais (revisões 2 e 3).
Ramos ([[Branch|branches]]) e mesclagens ([[Merge|merges]]) no histórico das revisões podem ocorrer em qualquer ponto. Cada ramo não mesclado cria uma nova cabeça ([[Head|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 [[Tip|tip]] (extremidade) do repositório, a cabeça com o maior número de revisão.
A revisão 4 é um [[MergeChangeset|changeset de mesclagem]], pois possui ''dois'' changesets pais (revisões 2 e 3).
Line 136: Line 136:
O Bob [:Clone:clona] este repositório e obtém uma cópia local, completa e independente do histórico desse repositório, e uma cópia de trabalho limpa da revisão mais recente, ''d'': O Bob [[Clone|clona]] este repositório e obtém uma cópia local, completa e independente do histórico desse repositório, e uma cópia de trabalho limpa da revisão mais recente, ''d'':
Line 148: Line 148:
Ele então [:Commit:consolida] algumas modificações, ''e'' e ''f'': Ele então [[Commit|consolida]] algumas modificações, ''e'' e ''f'':
Line 161: Line 161:
A Alice faz sua própria mudança ''g'' em paralelo, o que faz com que seu repositório fique diferente do de Bob, criando assim um [:Branch:ramo]: A Alice faz sua própria mudança ''g'' em paralelo, o que faz com que seu repositório fique diferente do de Bob, criando assim um [[Branch|ramo]]:
Line 173: Line 173:
O Bob então [:Pull:traz] 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 de Bob (aqui, é apenas uma mudança, a ''g''). Note que o diretório de trabalho de Bob '''não é modificado''' por essa operação: O Bob então [[Pull|traz]] 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 de Bob (aqui, é apenas uma mudança, a ''g''). Note que o diretório de trabalho de Bob '''não é modificado''' por essa operação:
Line 190: Line 190:
O Bob então faz um [:Merge:merge], que em seu diretório de trabalho mescla a última modificação na qual ele estava trabalhando (''f'') com a revisão tip. Nesse momento, seu diretório de trabalho tem duas revisões pai (''f'' e ''g''): O Bob então faz um [[Merge|merge]], que em seu diretório de trabalho mescla a última modificação na qual ele estava trabalhando (''f'') com a revisão tip. Nesse momento, seu diretório de trabalho tem duas revisões pai (''f'' e ''g''):
Line 207: Line 207:
Após examinar o resultado da mesclagem em seu diretório de trabalho, se certificando de que está correto, Bob consolida o resultado, criando um novo [:MergeChangeset:changeset de mesclagem] ''h'' em seu repositório: Após examinar o resultado da mesclagem em seu diretório de trabalho, se certificando de que está correto, Bob consolida o resultado, criando um novo [[MergeChangeset|changeset de mesclagem]] ''h'' em seu repositório:
Line 246: Line 246:
Ela deve fazer uma [:Update:atualização] para sincronizar seu diretório de trabalho com o changeset de mesclagem ''h''. Ela deve fazer uma [[Update|atualização]] para sincronizar seu diretório de trabalho com o changeset de mesclagem ''h''.
Line 299: Line 299:
Se você precisa manter os repositórios de múltiplos projetos juntos em um tipo de meta-repositório, você pode tentar a [:ForestExtension:extensão Forest].

Para uma introdução prática de como utilizar o Mercurial, veja o ["Tutorial"].
Se você precisa manter os repositórios de múltiplos projetos juntos em um tipo de meta-repositório, você pode tentar a [[ForestExtension|extensão Forest]].

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

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 a um armazenamento de histórico:

O armazenamento contém o histórico completo do projeto. Ao contrário 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, revisão 2). O arquivo de etiquetas e o arquivo de padrões de arquivos ignorados (.hgignore) também fazem parte do diretório de trabalho, e também são armazenados no repositório.

Consolidando Modificações

Quando você consolida suas modificações (usando o comando commit), o estado do diretório de trabalho em relação aos seus pais é gravado como um novo changeset (também chamado de uma nova revisão):

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

Revisões, Changesets, Cabeças e Tip

O Mercurial reúne mudanças relacionadas de vários arquivos em conjuntos atômicos de modificações (changesets), que 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.

Como o Mercurial permite desenvolvimento distribuído em paralelo, estes números de revisão podem ser diferentes de usuário para usuário. Assim, o Mercurial também atribui a cada revisão um identificador de changeset global. Identificadores de changeset são números hexadecimais de 40 dígitos, mas podem também ser abreviados para qualquer prefixo que não seja ambíguo, como "e38487".

Ramos (branches) e mesclagens (merges) no histórico das revisões podem ocorrer em qualquer ponto. Cada ramo não mesclado 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 tip (extremidade) do repositório, a cabeça com o maior número de revisão. A revisão 4 é um changeset de mesclagem, pois possui dois changesets pais (revisões 2 e 3).

Clonando, Fazendo Mudanças, Mesclando, Trazendo Revisões e Atualizando

Vamos começar com a usuária Alice, que tem um repositório assim:

O Bob clona este repositório e obtém uma cópia local, completa e independente do histórico desse repositório, e uma cópia de trabalho limpa da revisão mais recente, d:

Bob pode então trabalhar de forma independente. Ele então consolida algumas modificações, e e f:

A Alice faz sua própria mudança g em paralelo, o que faz com que seu repositório fique diferente do de Bob, criando assim um ramo:

O Bob então traz 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 de Bob (aqui, é apenas uma mudança, a g). Note que o diretório de trabalho de Bob não é modificado por essa operação:

Como a revisão g de Alice é a cabeça mais nova no repositório de Bob, ela passa a ser a tip.

O Bob então faz um merge, que em seu diretório de trabalho mescla a última modificação na qual ele estava trabalhando (f) com a revisão tip. Nesse momento, seu diretório de trabalho tem duas revisões pai (f e g):

Após examinar o resultado da mesclagem em seu diretório de trabalho, se certificando de que está correto, Bob consolida o resultado, criando um novo changeset de mesclagem h em seu repositório:

Se alice agora fizer um pull do repositório de Bob, ela obterá em seu repositório as mudanças e, f e h de Bob:

Note que o diretório de trabalho de Alice não foi modificado pelo pull. Ela deve fazer uma atualização para sincronizar seu diretório de trabalho com o changeset de mesclagem h. Isto muda o changeset pai de seu diretório de trabalho para o changeset h e atualiza os arquivos do seu diretório de trabalho para a revisão h.

Agora Alice e Bob estão novamente totalmente sincronizados.

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):

Ao contrário de sistemas de controle de versão centralizados, onde experimentação pode ser desastrosa, em um sistema distribuído como o Mercurial você pode simplesmente clonar e experimentar. Se você gostar dos resultados, você pode enviá-los de volta; se não, remova o repositório clonado e tente algo diferente.

O que o Mercurial não faz

Muitos usuários do Subversion ou do CVS costumam manter projetos relacionados agrupados em um repositório. O Mercurial não foi projetado para isso; em especial, isso significa que você não pode obter apenas um diretório de um repositório. Se você precisa manter os repositórios de múltiplos projetos juntos em um tipo de meta-repositório, você pode tentar a extensão Forest.

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


CategoryBrazilianPortuguese

BrazilianPortugueseUnderstandingMercurial (last edited 2013-04-04 22:31:53 by LeonardoPostacchini)