Tutorial - Examinar o histórico do repositório
(This page in English: TutorialHistory)
(Esta página é a parte 3 de 9 da série BrazilianPortugueseTutorial. A parte anterior é BrazilianPortugueseTutorialClone, a próxima parte é BrazilianPortugueseTutorialFirstChange)
Neste ponto, nós já acompanhamos ../BrazilianPortugueseTutorialClone para fazer um clone de um repositório; nossa cópia local é chamada my-hello.
Vamos examinar o histórico deste repositório. Para isso, usamos o comando log . Ele imprime um resumo de cada evento que ocorreu no repositório, do mais recente para o mais antigo.
$ hg log changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile changeset: 0:0a04b987be5a user: mpm@selenic.com date: Fri Aug 26 01:20:50 2005 -0700 summary: Create a standard "hello, world" program
Estas linhas de saída são descritas a seguir.
* Cada parágrafo descreve um changeset (conjunto de mudanças) específico. Um changeset é uma mudança de um ou mais arquivos, agrupada em uma unidade lógica.
Para o Mercurial, os conceitos changeset e revision são intercambiáveis, de modo que em português podemos usar simplesmente "revisão".
- Em nosso caso acima, podemos ver que o histórico do repositório consiste de duas revisões.
O primeiro número antes do dois-pontos é um número de revisão; é uma maneira local compacta de identificar a revisão. Ele é válido apenas para este repositório.
O número hexadecimal após o dois-pontos é um changeset ID (identificador de revisão) abreviado; ele identifica a revisão, e é o mesmo em todos os repositórios que contenham esta revisão. Sempre que você discutir uma revisão revisão com outra pessoa, use o ID de revisão, e não o número de revisão.
tag é uma etiqueta, um nome simbólico arbitrário para uma revisão.
Você pode atribuir uma ou mais etiquetas a uma revisão qualquer. Na prática, não serão muitas as revisões que terão uma etiqueta associada a elas, de modo que a linha tag nem sempre estará presente.
A etiqueta especial denominada tip (ponta) sempre identifica a tip, que é a revisão mais recente no repositório. Se você criar outra revisão (o que faremos em breve), a etiqueta tip será removida da revisão mais recente e adicionada à nova revisão.
user (usuário) identifica a pessoa que criou a revisão. Este é um texto livre; ele tipicamente contém um endereço eletrônico, e algumas vezes também inclui o nome da pessoa.
date (data) descreve quando a revisão foi criada. Essas datas são impressas no fuso horário do criador da revisão.
summary (resumo) dá a primeira linha da descrição da revisão. Isto foi colocado pelo criador da revisão no momento em que a criou, para auxiliar a si mesmo e aos outros a entender o propósito dessa revisão (veja também ChangeSetComments).
parent identifica as revisões pais, no caso de haver mais de uma (isso acontece quando você faz uma mesclagem de mudanças de vários repositórios).
- Na maior parte das vezes há apenas um pai, que é a revisão imediatamente mais antiga. Esse é o caso em nosso exemplo acima.
Podemos obter informações de histórico mais detalhadas pedindo pela saída prolixa com a opção -v , ou a opção global --debug para todos os detalhes:
$ hg log -v changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) $ hg log --debug changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile extra: branch=default description: Create a makefile (...)
A saída prolixa contém alguns campos mais do que a saída padrão:
files (arquivos) lista os arquivos modificados nesta revisão.
description (descrição) contém a descrição completa em múltiplas linhas da revisão, ao invés de apenas a primeira linha.
- No nosso caso, as descrições contêm apenas uma linha, então não há muita diferença.
A saída --debug adiciona os seguintes campos à saída prolixa (veja também DebuggingFeatures):
changeset agora fornece o ID de revisão sem abreviação.
dois campos parent que fornecem o ID de revisão de ambos os pais desta revisão, onde -1:0000000000000000000000000000000000000000 se refere a um pai não-existente.
manifest fornece o manifest ID para esta revisão.
file+ lista um arquivo adicionado nesta revisão.
file- lista um arquivo removido nesta revisão.
O comando log possui uma opção -r para exibir revisões específicas:
$ hg log -r1 changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile
A opção -r na verdade suporta uma sintaxe bastante flexível para selecionar seqüências de revisões. No entanto, devido ao número limitado de revisões em nosso repositório de exemplo, nós não podemos fornecer uma boa demonstração aqui. Por favor consulte a página de manual para mais informações.
O comando log também possui a opção -p que mostra os patches (arquivos texto que descrevem diferenças) associados às revisões:
$ hg log -r1 -p changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile diff -r 0a04b987be5a -r 82e55d328c8c Makefile --- /dev/null Fri Aug 26 01:20:50 2005 -0700 +++ b/Makefile Fri Aug 26 01:21:28 2005 -0700 @@ -0,0 +1,1 @@ +all: hello
Nós também podemos usar o comando tip para exibir informações da tip, ou seja, da última revisão. O comando tip pode ser considerado um atalho para log -r tip.
$ hg tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile $ hg log -r tip changeset: 1:82e55d328c8c tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 summary: Create a makefile
Agora que nós temos uma noção do que já aconteceu, vamos fazer algumas mudanças! Em frente, com ../BrazilianPortugueseTutorialFirstChange!