Tutorial - examinar o histórico do repositório
(This page in English: TutorialHistory)
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 , que imprime um resumo de cada evento que ocorreu no repositório, do mais recente para o mais antigo.
$ cd my-hello $ 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.
- Em nosso caso acima, podemos ver que o histórico do repositório consiste de dois changesets.
changeset identifica o changeset.
O primeiro número antes do dois-pontos é um revision number (número de revisão); é uma maneira local compacta de identificar o changeset. Ele é válido apenas para este repositório.
O número hexadecimal após o dois-pontos é um changeset ID (identificador de changeset) abreviado; ele identifica o changeset, e é o mesmo em todos os repositórios que contenham este changeset. Sempre que você discutir um changeset com outra pessoa, use o changeset ID, e não o número de revisão.
tag é uma tag (etiqueta), um nome simbólico arbitrário para um changeset.
Você pode atribuir uma ou mais tags a um changeset qualquer. Na prática, não serão muitos os changesets que terão uma tag associada a eles, de modo que a linha tag nem sempre estará presente.
A tag especial denominada tip (ponta) sempre identifica a tip, que é o changeset mais recente no repositório. Se você criar outro changeset (o que faremos em breve), a tag tip será removida do changeset mais recente e adicionada ao novo changeset.
user (usuário) identifica a pessoa que criou o changeset. 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 o changeset foi criado. Essas datas são impressas no fuso horário do criador do changeset.
summary (resumo) dá a primeira linha da descrição do changeset. Isto foi colocado pelo criador do changeset no momento em que o criou, para auxiliar a si mesmo e aos outros a entender o propósito do changeset (veja também ChangeSetComments).
parent identifica os changesets pais, no caso de haver mais de um (isso acontece quando você faz um merge (recombinação) de mudanças de vários repositórios).
- Na maior parte das vezes há apenas um pai, que é o changeset mais velho que o próprio. 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:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files: Makefile description: Create a makefile (...) $ hg log --debug manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600 changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65 tag: tip parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9 parent: -1:0000000000000000000000000000000000000000 user: mpm@selenic.com date: Fri Aug 26 01:21:28 2005 -0700 files+: Makefile description: Create a makefile (...)
A saída prolixa contém alguns campos mais do que a saída padrão:
changeset agora fornece o changeset ID sem abreviação.
files (arquivos) lista os arquivos modificados neste changeset.
description (descrição) contém a descrição completa em múltiplas linhas do changeset, 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):
file+ lista um arquivo adicionado neste changeset.
file- lista um arquivo removido neste changeset.
manifest fornece o manifest ID para este changeset.
dois campos parent que fornecem o changeset ID de ambos os pais deste changeset, onde -1:0000000000000000000000000000000000000000 se refere a um pai não-existente.
O comando log possui uma opção -r para exibir changesets específicos:
$ 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 changesets. No entanto, devido ao número limitado de changesets 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 que descrevem diferenças) associados aos changesets:
$ 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, do último changeset. 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!