Size: 88
Comment: stub
|
Size: 4866
Comment: fixed category
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
## page was renamed from WagnerBruna/BrazilianPortugueseTutorialMerge | |
Line 2: | Line 3: |
== Tutorial - Merging changes == |
|
Line 5: | Line 8: |
Em ../BrazilianPortugueseTutorialExport, nós aprendemos como compartilhar uma mudança com outra pessoa. Agora iremos demonstrar como fazer o [:Merge:merge] (recombinação) dessas mudanças a partir de um [:Pull:pull] de outro [:Repository:repositório] que realizou uma mudança incompatível. Primeiramente, nós devemos criar algo para fazer o [:Merge:merge]. Vamos novamente criar um [:Clone:clone] do repositório {{my-hello}}} : {{{ $ cd .. $ hg clone my-hello my-hello-desc }}} Nós colocaremos em {{{hello.c}}} uma descrição em sua seção de comentários. {{{ $ cd my-hello-desc $ vi hello.c }}} Vamos trocar a segunda linha, que é: {{{ * hello.c }}} por esta linha: {{{ * hello.c - hello, world }}} Salvemos, fechemos o editor, e façamos o [:Commit:commit] de nossa alteração. Desta vez, nós economizamos um pouco de tempo através da opção {{{-m}}} para o comando {{{commit}}} , com a qual fornecemos um comentário diretamente (e evitamos que o editor de texto seja chamado): {{{ $ hg commit -m "Add description of hello.c" }}} Neste ponto, nós fizemos uma mudança em {{{hello.c}}} no repositório {{{my-hello-new-output}}} , e outra mudança em {{{hello.c}}} no repositório {{{my-hello-desc}}} (veja [:Branch]). Como nós ''recombinamos'' essas duas linhas divergentes de desenvolvimento? Haverá algum problema quando tentarmos fazer um [:Pull:pull] de um para o outro? Isso funcionará sem problemas. Enquanto ainda estamos em {{{my-hello-desc}}}, vamos fazer um pull das mudanças de {{{my-hello-new-output}}} e ver o que acontece: {{{ $ 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 (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge) }}} Isto se parece exatamente com a saída de {{{pull}}} em ../BrazilianPortugueseTutorialShareChange! Então tudo o que temos de fazer agora é um [:Update:update], certo? {{{ $ hg update abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes }}} Não. Algo aconteceu. O Mercurial está nos dizendo que devemos recombinar as mudanças que fizemos em cada repositório. Isso soa complicado, certo? Mas na verdade é bem fácil. Vamos seguir as instruções da última linha da saída: {{{ $ hg merge merging hello.c 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) }}} (~-''Nota para usuários do Windows:'' se você receber um erro como ''`hgmerge is not recognized as an internal or external command.`'', o Mercurial não consegue encontrar um programa de merge. Veja MergeProgram para informações sobre como consertar isso.-~) E é apenas isso! O Mercurial foi capaz de gerenciar o merge automaticamente para você, chamando implicitamente o script {{{hgmerge}}} (ou qualquer que seja seu programa de merge; dependendo do seu ambiente, o `hgmerge` pode chamar um programa gráfico de resolução de merges). Se olharmos {{{hello.c}}}, veremos que contém ''ambas'' as mudanças de {{{my-hello-new-output}}} e de {{{my-hello-desc}}}. (~-Nota: em versões anteriores ao Mercurial 0.9, `hg update -m` seria usado ao invés de `hg merge`-~). Ao trabalhar com mudanças feitas por outras pessoas, esse é o tipo de recombinação que você fará na maior parte das vezes. Não esqueça de fazer o commit desta mudança para o repositório, como sugerido na última linha da saída de {{{hg merge}}}: {{{ $ hg commit -m "Merged changes from my-hello-new-output" }}} Esse comando não deve mostrar nenhuma saída. Para mostrar as mudanças de nossa recombinação, nós usamos o comando {{{annotate}}} , que exibe informações de [:ChangeSet:changeset] para cada linha do arquivo. Note que a revisão 2 foi nossa modificação em {{{my-hello-desc}}} e a revisão 3 foi a mudança trazida de {{{my-hello-new-output}}} e recombinada no repositório {{{my-hello-desc}}} : {{{ $ hg annotate hello.c 0: /* 2: * hello.c - hello, world 0: * 0: * Placed in the public domain by Bryan O'Sullivan 0: * 0: * This program is not covered by patents in the United States or other 0: * countries. 0: */ 0: 0: #include <stdio.h> 0: 0: int main(int argc, char **argv) 0: { 0: printf("hello, world!\n"); 3: printf("sure am glad I'm using Mercurial!\n"); 0: return 0; 0: } }}} Vamos agora ver como lidar com situações onde foram feitas mudanças [:Conflict:conflitantes] em ../BrazilianPortugueseTutorialConflict. |
|
Line 6: | Line 112: |
CategoryTutorial | CategoryBrazilianPortuguese |
Tutorial - Merging changes
(This page in English: [:TutorialMerge])
Em ../BrazilianPortugueseTutorialExport, nós aprendemos como compartilhar uma mudança com outra pessoa. Agora iremos demonstrar como fazer o [:Merge:merge] (recombinação) dessas mudanças a partir de um [:Pull:pull] de outro [:Repository:repositório] que realizou uma mudança incompatível.
Primeiramente, nós devemos criar algo para fazer o [:Merge:merge]. Vamos novamente criar um [:Clone:clone] do repositório } :
$ cd .. $ hg clone my-hello my-hello-desc
Nós colocaremos em hello.c uma descrição em sua seção de comentários.
$ cd my-hello-desc $ vi hello.c
Vamos trocar a segunda linha, que é:
* hello.c
por esta linha:
* hello.c - hello, world
Salvemos, fechemos o editor, e façamos o [:Commit:commit] de nossa alteração. Desta vez, nós economizamos um pouco de tempo através da opção -m para o comando commit , com a qual fornecemos um comentário diretamente (e evitamos que o editor de texto seja chamado):
$ hg commit -m "Add description of hello.c"
Neste ponto, nós fizemos uma mudança em hello.c no repositório my-hello-new-output , e outra mudança em hello.c no repositório my-hello-desc (veja [:Branch]). Como nós recombinamos essas duas linhas divergentes de desenvolvimento? Haverá algum problema quando tentarmos fazer um [:Pull:pull] de um para o outro?
Isso funcionará sem problemas. Enquanto ainda estamos em my-hello-desc, vamos fazer um pull das mudanças de my-hello-new-output e ver o que acontece:
$ 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 (+1 heads) (run 'hg heads' to see heads, 'hg merge' to merge)
Isto se parece exatamente com a saída de pull em ../BrazilianPortugueseTutorialShareChange! Então tudo o que temos de fazer agora é um [:Update:update], certo?
$ hg update abort: update spans branches, use 'hg merge' or 'hg update -C' to lose changes
Não. Algo aconteceu. O Mercurial está nos dizendo que devemos recombinar as mudanças que fizemos em cada repositório. Isso soa complicado, certo? Mas na verdade é bem fácil. Vamos seguir as instruções da última linha da saída:
$ hg merge merging hello.c 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit)
(Nota para usuários do Windows: se você receber um erro como hgmerge is not recognized as an internal or external command., o Mercurial não consegue encontrar um programa de merge. Veja MergeProgram para informações sobre como consertar isso.)
E é apenas isso! O Mercurial foi capaz de gerenciar o merge automaticamente para você, chamando implicitamente o script hgmerge (ou qualquer que seja seu programa de merge; dependendo do seu ambiente, o hgmerge pode chamar um programa gráfico de resolução de merges). Se olharmos hello.c, veremos que contém ambas as mudanças de my-hello-new-output e de my-hello-desc.
(Nota: em versões anteriores ao Mercurial 0.9, hg update -m seria usado ao invés de hg merge).
Ao trabalhar com mudanças feitas por outras pessoas, esse é o tipo de recombinação que você fará na maior parte das vezes. Não esqueça de fazer o commit desta mudança para o repositório, como sugerido na última linha da saída de hg merge:
$ hg commit -m "Merged changes from my-hello-new-output"
Esse comando não deve mostrar nenhuma saída.
Para mostrar as mudanças de nossa recombinação, nós usamos o comando annotate , que exibe informações de [:ChangeSet:changeset] para cada linha do arquivo. Note que a revisão 2 foi nossa modificação em my-hello-desc e a revisão 3 foi a mudança trazida de my-hello-new-output e recombinada no repositório my-hello-desc :
$ hg annotate hello.c 0: /* 2: * hello.c - hello, world 0: * 0: * Placed in the public domain by Bryan O'Sullivan 0: * 0: * This program is not covered by patents in the United States or other 0: * countries. 0: */ 0: 0: #include <stdio.h> 0: 0: int main(int argc, char **argv) 0: { 0: printf("hello, world!\n"); 3: printf("sure am glad I'm using Mercurial!\n"); 0: return 0; 0: }
Vamos agora ver como lidar com situações onde foram feitas mudanças [:Conflict:conflitantes] em ../BrazilianPortugueseTutorialConflict.