Tutorial - compartilhando uma mudança com outro repositório
(This page in English: TutorialShareChange. Esta página é a parte 5 de 9 da série BrazilianPortugueseTutorial. A parte anterior é BrazilianPortugueseTutorialFirstChange, a próxima parte é BrazilianPortugueseTutorialExport)
Em BrazilianPortugueseTutorialFirstChange, nós criamos uma revisão no repositório my-hello-new-output. Agora nós queremos propagar aquela mudança para algum outro lugar.
De acordo com o bom estilo do Mercurial, primeiramente vamos fazer um clone do nosso repositório original.
$ cd .. $ hg clone my-hello my-hello-share updating working directory 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Nós podemos usar o comando tip para determinar qual é a tip em cada repositório (lembre-se, a tip é a revisão mais recente). Nós passamos o parâmetro -q ("be quiet", ou "seja silencioso") para evitar que o Mercurial imprima uma descrição completa da tip.
$ cd my-hello-share $ hg -q tip 1:82e55d328c8c $ cd ../my-hello-new-output $ hg -q tip 2:86794f718fb1
Como podemos notar, a tip é diferente em cada repositório. Vamos voltar ao my-hello-share e propagar nossa nova revisão para ele. Para fazer isso, nós usamos o comando pull , que traz todas as revisões que estão no outro repositório, mas ainda não estão neste, para este repositório aqui.
$ cd ../my-hello-share $ hg pull ../my-hello-new-output pulling from ../my-hello-new-output searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files (run 'hg update' to get a working copy)
Ao contrário de outros comandos comuns do Mercurial, pull é prolixo. Nesse caso, o pull terminou com sucesso.
A última linha da saída é importante. Por padrão, o Mercurial não atualiza o diretório de trabalho após um pull. Isso quer dizer que embora o repositório contenha agora a revisão, o arquivo hello.c no diretório de trabalho ainda tem seu conteúdo anterior ao pull.
Nós podemos atualizar este arquivo (e quaisquer outros que mudaram durante o pull) seguindo o lembrete do Mercurial (e usando a abrevição up do comando update):
$ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Neste ponto, nós podemos verificar que my-hello-share e my-hello-new-output têm conteúdo e histórico de revisões idênticos.
Para verificar que os repositórios têm as mesmas revisões, podemos ir até my-hello-share, e fazer
$ hg incoming ../my-hello-new-output $ hg outgoing ../my-hello-new-output
O comando incoming é similar ao pull, mas apenas nos informa quais as revisões que seriam trazidas para este repositório se um pull fosse executado. Por sua vez, outgoing nos mostra se alguma revisão deste repositório não está presente no outro repositório (veja hg help incoming e hg help outgoing para mais detalhes). Se estes dois comandos não informarem nenhuma mudança, podemos concluir que os repositórios contêm as mesmas revisões.
Para compartilhar uma mudança com outra pessoa, nós continuaremos em BrazilianPortugueseTutorialExport.