Differences between revisions 2 and 7 (spanning 5 versions)
Revision 2 as of 2008-02-11 22:01:58
Size: 10640
Editor: WagnerBruna
Comment:
Revision 7 as of 2009-05-19 19:31:03
Size: 6783
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from WagnerBruna/BrazilianPortugueseTutorialFirstChange
Line 3: Line 4:
## still a draft

##== Tutorial - making our first change ==
Line 8: Line 6:
##Carrying forward from TutorialHistory, we are inside our {{{my-hello}}} repository that we cloned in TutorialClone.
Prosseguindo a partir de ../BrazilianPortugueseTutorialHistory, nós estamos dentro de nosso repositório {{{my-hello}}} , que clonamos em ../BrazilianPortugueseTutorialClone.
''(This page in English: [[TutorialFirstChange]])''
Line 11: Line 8:
##It is good Mercurial development practice to isolate each change in a separate [:Repository:repository] (see also ["WorkingPractices"]). This prevents unrelated code from getting mixed up, and makes it easier to test individual chunks of work one by one. Let's start out by following that model.
É uma boa prática no desenvolvimento com o Mercurial isolar cada mudança em um [:Repository:repositório] separado (veja também ["WorkingPractices"]). Isso evita que código não-relacionado se misture, e facilita o teste de blocos individuais de trabalho um a um. Vamos começar de acordo com esse modelo.
Prosseguindo a partir de ../BrazilianPortugueseTutorialHistory, nós estamos dentro de nosso repositório {{{my-hello}}} , do qual fizemos um clone em ../BrazilianPortugueseTutorialClone.
Line 14: Line 10:
##Our silly goal is to get the "hello, world" program to print another line of output. First, we create a new repository called {{{my-hello-new-output}}}, by cloning from {{{my-hello}}}, for our little project. É uma boa prática no desenvolvimento com o Mercurial isolar cada mudança em um [[Repository|repositório]] separado (veja também [[WorkingPractices]]). Isso evita que código não-relacionado se misture, e facilita o teste um a um de partes individuais do trabalho. Vamos começar de acordo com esse modelo.
Line 23: Line 20:
##'''Note:''' Notice that we have given our new repository a descriptive name, basically identifying the purpose of the repository. Since making a [:Clone:clone] of a repository in Mercurial is cheap, we will quickly accumulate many slightly different repositories. If we do not give these repositories descriptive names, we will rapidly lose the ability to tell them apart.
'''Nota:''' Note que estamos dando um nome descritivo para nosso novo repositório, basicamente identificando o propósito do repositório. Já que a criação de um [:Clone:clone] de um repositório no Mercurial é uma operação barata, nós rapidamente iremos acumular muitos repositórios ligeiramente diferentes. Se nós não dermos a eles nomes descritivos, nós rapidamente perderemos a capacidade de diferenciá-los.
'''Nota:''' Note que estamos dando um nome descritivo para nosso novo repositório, basicamente identificando o propósito do repositório. Já que no Mercurial a criação de um [[Clone|clone]] de um repositório é uma operação barata, nós rapidamente iremos acumular muitos repositórios ligeiramente diferentes. Se nós não dermos a eles nomes descritivos, rapidamente perderemos a capacidade de diferenciá-los.
Line 26: Line 22:
##Now it's time to make a change in the new repository. Let's go into the [:WorkingDirectory:working directory], which is simply our name for the directory where all the files are, and modify the source code with our favorite editor:
Agora é o momento de fazer uma mudança no novo repositório. Vamos entrar no [:WorkingDirectory:diretório de trabalho], que é simplesmente o nome que damos para o diretório onde estão todos os arquivos, e modificar o código fonte com nosso editor favorito:
Agora é o momento de fazer uma mudança no novo repositório. Vamos entrar no [[WorkingDirectory|diretório de trabalho]], que é simplesmente o nome que damos para o diretório onde estão todos os arquivos, e modificar o código fonte com nosso editor favorito:
Line 34: Line 29:
##The contents of {{{hello.c}}} initially look like this:
Line 56: Line 50:
##Let's edit {{{main}}} so that it prints an extra line of output:
Vamos editar {{{main}}} para que ele mostre uma linha extra de saída:
Vamos editar a função {{{main}}} para que ela mostre uma linha extra de saída:
Line 70: Line 63:
##Once we're done, we quit out of our favorite editor, and we're done. That's it. The edit is now ready for us to create a [:ChangeSet:changeset].
Assim que terminamos, nós fechamos nosso editor favorito, e pronto: a edição está agora pronta para criarmos um [:ChangeSet:changeset].
Assim que terminamos, fechamos nosso editor favorito, e pronto: a edição está agora pronta para criarmos um [[ChangeSet|changeset]].
Line 73: Line 65:
##But what if we're interrupted, and we've forgotten what changes are going to make it into the changeset once we create it? For this, we use the {{{status}}} command.
Mas e se interrompermos nosso trabalho, e esquecermos quais mudanças farão parte do changeset quando o criarmos? Para isso, usamos o comando {{{status}}} .
Mas e se interrompermos nosso trabalho, e esquecermos quais mudanças farão parte do changeset quando o criarmos? Para verificar quais arquivos foram modificados nós usamos o comando {{{status}}} :
Line 81: Line 72:
##The output is terse, but prefix {{{M}}} is simply telling us that {{{hello.c}}} has been modified, so our change is ready to go into a changeset.
Line 84: Line 74:
##We may also examine the actual changes we have made to the file using the {{{diff}}} command:
Line 101: Line 90:
##<!> In case we wish to '''discard''' our changes and start over, we may use the {{{revert}}} command to restore hello.c to its unmodified state (or use the -a option to revert all files). Just make sure you know this is what you really want.
Line 115: Line 103:
##If we change our mind again and want to reuse the modification we have made, we just remove the unmodified state of hello.c and rename the modified hello.c.orig to hello.c
Se mudarmos de idéia novamente e quisermos reaproveitar a modificação que fizemos, basta removermos o arquivo {{{hello.c}}} sem modificações e renomearmos o {{{hello.c.orig}}} modificado para {{{hello.c}}}.
Se mudarmos de idéia novamente e quisermos reaproveitar a modificação que fizemos, basta removermos o arquivo {{{hello.c}}} sem modificações e renomearmos de volta o {{{hello.c.orig}}} modificado para {{{hello.c}}}:
Line 125: Line 112:
##The act of creating a changeset is called [:Commit:committing] it. We perform a commit using the {{{commit}}} command:
O ato de criar um changeset é chamado [:Commit:committing] (armazenamento). Nós fazemos um commit através do comando {{{commit}}} .
O ato de criar um changeset é chamado [[Commit|committing]] (armazenamento). Nós fazemos um commit através do comando {{{commit}}} .
Line 132: Line 118:
##This drops us into an editor, and presents us with a few cryptic lines of text.
Isto irá abrir o editor de texto padrão, e apresentar algumas linhas de texto.
Isso irá abrir o editor de texto padrão, e apresentar algumas linhas de texto.
Line 135: Line 120:
##'''Note:''' The default editor is {{{vi}}}. This can be changed using the {{{EDITOR}}} or ["HGEDITOR"] environment variables. Also, the [:Manifest:manifest] hash might be different, depending on how you typed and saved the file.
'''Nota:''' O editor de texto padrão é {{{vi}}} (no Unix e similares). Isso pode ser mudado usando as variáveis de ambiente {{{EDITOR}}} ou ["HGEDITOR"] . Além disso, o hash do [:Manifest:manifest] pode ser diferente, dependendo de como você digitou e salvou o arquivo.
'''Nota:''' O editor de texto padrão é {{{vi}}} (no Unix e similares). Ele pode ser mudado usando as variáveis de ambiente {{{EDITOR}}} ou [[HGEDITOR]] . Além disso, o hash do [[Manifest|manifest]] pode ser diferente, dependendo de como você digitou e salvou o arquivo.
Line 144: Line 128:
##The first line is empty and the lines that follow identify the files that will go into this changeset.
Line 147: Line 130:
##To commit the changeset, we must describe the reason for it (see ["ChangeSetComments"]). Let's type something like this:
Para fazer o commit deste changeset, nós devemos descrever seu propósito (veja ["ChangeSetComments"]). Vamos digitar algo assim:
Para fazer o commit deste changeset, nós devemos descrever seu propósito (veja [[ChangeSetComments]]). Vamos digitar algo assim:
Line 156: Line 138:
##Next, we save the text and quit the editor, and, if all goes well, the {{{commit}}} command will exit and prints no output. <!> If you quit the editor without saving the text, {{{commit}}} will abort the operation, so you may change your mind before committing.
Line 159: Line 140:
##'''Note:''' Before committing anything into a serious project, you may want to configure a meaningful username in {{{~/.hgrc}}}; see ["QuickStart2"].
'''Nota:''' Antes de faezr o commit de qualquer coisa em um projeto sério, você pode querer configurar um nome de usuário com significado em {{{~/.hgrc}}}; veja ["QuickStart2"].
'''Nota:''' Antes de fazer o commit de qualquer coisa em um projeto sério, você pode querer configurar um nome de usuário adequado em {{{~/.hgrc}}}; veja [[QuickStart2]].
Line 162: Line 142:
##Let's see what the {{{status}}} command will tell us now?
Vejamos o que o comando {{{status}}} vai nos dizer agora?
Vejamos o que o comando {{{status}}} vai nos dizer agora:
Line 169: Line 148:
##Nothing! Our change has been committed to a changeset, so there's no modified file in need of a commit. Our [:Tip:tip] now matches our working directory contents.
Nada! Fizemos o commit de nossa mudança para um changeset, de modo que não há arquivos modificados. Nossa [:Tip:tip] agora combina com o conteúdo de nosso diretório de trabalho.
Nada! Fizemos o commit de nossa mudança para um changeset, de modo que não há arquivos modificados. Nossa [[Tip|tip]] agora combina com o conteúdo de nosso diretório de trabalho.
Line 172: Line 150:
##We can now examine the change history for our new work:
Line 187: Line 164:
##'''Note:''' The user, date, and [:ChangeSetID:changeset ID] will of course vary.
'''Nota:''' Naturalmente o usuário, data e [:ChangeSetID:changeset ID] irão variar.
'''Nota:''' Naturalmente o usuário, data e [[ChangeSetID|changeset ID]] irão variar.
Line 190: Line 166:
##As we discussed in TutorialClone, the new changeset only exists in this repository. This is a critical part of the way Mercurial works.
Como discutimos em TutorialClone, o novo changeset existe apenas neste repositório. Essa é uma parte crítica do modo como o Mercurial opera.
Como discutimos em ../BrazilianPortugueseTutorialClone, o novo changeset existe apenas neste repositório. Essa é uma parte crítica do modo como o Mercurial opera.
Line 193: Line 168:
##To share changes, we must continue to TutorialShareChange.
Line 196: Line 170:
CategoryTutorial CategoryBrazilianPortuguese

Tutorial - realizar nossa primeira alteração

(This page in English: TutorialFirstChange)

Prosseguindo a partir de ../BrazilianPortugueseTutorialHistory, nós estamos dentro de nosso repositório my-hello , do qual fizemos um clone em ../BrazilianPortugueseTutorialClone.

É uma boa prática no desenvolvimento com o Mercurial isolar cada mudança em um repositório separado (veja também WorkingPractices). Isso evita que código não-relacionado se misture, e facilita o teste um a um de partes individuais do trabalho. Vamos começar de acordo com esse modelo.

Nosso tolo objetivo é fazer com que o programa "hello, world" imprima outra linha de saída. Em primeiro lugar, nós criamos um novo repositório chamado my-hello-new-output, um clone de my-hello, para nosso pequeno projeto.

$ cd ..
$ hg clone my-hello my-hello-new-output
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

Nota: Note que estamos dando um nome descritivo para nosso novo repositório, basicamente identificando o propósito do repositório. Já que no Mercurial a criação de um clone de um repositório é uma operação barata, nós rapidamente iremos acumular muitos repositórios ligeiramente diferentes. Se nós não dermos a eles nomes descritivos, rapidamente perderemos a capacidade de diferenciá-los.

Agora é o momento de fazer uma mudança no novo repositório. Vamos entrar no diretório de trabalho, que é simplesmente o nome que damos para o diretório onde estão todos os arquivos, e modificar o código fonte com nosso editor favorito:

$ cd my-hello-new-output
$ vi hello.c

O conteúdo de hello.c inicialmente é:

/*
 * hello.c
 *
 * Placed in the public domain by Bryan O'Sullivan
 *
 * This program is not covered by patents in the United States or other
 * countries.
 */

#include <stdio.h>

int main(int argc, char **argv)
{
        printf("hello, world!\n");
        return 0;
}

Vamos editar a função main para que ela mostre uma linha extra de saída:

(...)

int main(int argc, char **argv)
{
        printf("hello, world!\n");
        printf("sure am glad I'm using Mercurial!\n");
        return 0;
}

Assim que terminamos, fechamos nosso editor favorito, e pronto: a edição está agora pronta para criarmos um changeset.

Mas e se interrompermos nosso trabalho, e esquecermos quais mudanças farão parte do changeset quando o criarmos? Para verificar quais arquivos foram modificados nós usamos o comando status :

$ hg status
M hello.c

A saída é compacta, mas o prefixo M está meramente nos dizendo que hello.c foi modificado, então nossa mudança está pronta para ser incluída em um changeset.

Nós também podemos examinar as mudanças em si que fizemos no arquivo usando o comando diff:

$ hg diff
diff -r 82e55d328c8c hello.c
--- a/hello.c   Fri Aug 26 01:21:28 2005 -0700
+++ b/hello.c   Fri Sep 30 10:27:47 2005 +0800
@@ -12,5 +12,6 @@
 int main(int argc, char **argv)
 {
        printf("hello, world!\n");
+       printf("sure am glad I'm using Mercurial!\n");
        return 0;
 }

<!> No caso de querermos descartar nossas mudanças e começar novamente, podemos usar o comando revert para restaurar hello.c para seu estado sem modificações (ou usar a opção -a para restaurar todos os arquivos). Apenas tenha a certeza de que é isso que você realmente quer fazer.

$ hg revert hello.c

Por padrão o comando revert também grava uma cópia de segurança dos arquivos modificados com a extensão .orig.

$ hg status
? hello.c.orig

Se mudarmos de idéia novamente e quisermos reaproveitar a modificação que fizemos, basta removermos o arquivo hello.c sem modificações e renomearmos de volta o hello.c.orig modificado para hello.c:

$ rm hello.c
$ mv hello.c.orig hello.c
$ hg status
M hello.c

O ato de criar um changeset é chamado committing (armazenamento). Nós fazemos um commit através do comando commit .

$ hg commit

Isso irá abrir o editor de texto padrão, e apresentar algumas linhas de texto.

Nota: O editor de texto padrão é vi (no Unix e similares). Ele pode ser mudado usando as variáveis de ambiente EDITOR ou HGEDITOR . Além disso, o hash do manifest pode ser diferente, dependendo de como você digitou e salvou o arquivo.

(empty line)
HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944
HG: changed hello.c

A primeira linha é vazia, e as linhas que se seguem identificam os arquvos que irão incorporar este changeset.

Para fazer o commit deste changeset, nós devemos descrever seu propósito (veja ChangeSetComments). Vamos digitar algo assim:

Express great joy at existence of Mercurial
HG: manifest hash 14595beb70bcfb74bf227437d70c38878421c944
HG: changed hello.c

Em seguida, nós salvamos o texto e fechamos o editor, e se tudo correr bem, o comando commit irá terminar sem imprimir nada. <!> Se você fechar o editor sem salvar o texto, commit irá abortar a operação, de modo que você pode mudar de idéia antes do commit.

Nota: Antes de fazer o commit de qualquer coisa em um projeto sério, você pode querer configurar um nome de usuário adequado em ~/.hgrc; veja QuickStart2.

Vejamos o que o comando status vai nos dizer agora:

$ hg status

Nada! Fizemos o commit de nossa mudança para um changeset, de modo que não há arquivos modificados. Nossa tip agora combina com o conteúdo de nosso diretório de trabalho.

Nós agora podemos examinar o histórico de mudanças para o nosso novo trabalho:

$ hg log
changeset:   2:a58809af174d
tag:         tip
user:        mpm@selenic.com
date:        Fri Aug 26 01:26:28 2005 -0700
summary:     Express great joy at existence of Mercurial

(...)

Aí está! Nós fizemos o commit de um changeset.

Nota: Naturalmente o usuário, data e changeset ID irão variar.

Como discutimos em ../BrazilianPortugueseTutorialClone, o novo changeset existe apenas neste repositório. Essa é uma parte crítica do modo como o Mercurial opera.

Para compartilhar mudanças, nós devemos prosseguir para ../BrazilianPortugueseTutorialShareChange.


CategoryBrazilianPortuguese

BrazilianPortugueseTutorialFirstChange (last edited 2010-05-02 15:36:08 by WagnerBruna)