# [PATCH 2/2] Translate the tutorial to Brazillian Portuguese.

10 messages from 2009-06-29 to 2009-07-30. Participants: Thadeu Lima de Souza Cascardo, Junio C Hamano, Jakub Narebski, André Goddard Rosa.
Thread: https://gitlist.dev/t/19963

## Thadeu Lima de Souza Cascardo, 2009-06-29 14:05

Subject: [PATCH 2/2] Translate the tutorial to Brazillian Portuguese.
Message-ID: <1246284358-26491-1-git-send-email-cascardo@holoscopio.com>
URL: https://gitlist.dev/e/1246284358-26491-1-git-send-email-cascardo%40holoscopio.com

```
---
 Documentation/pt/gittutorial.txt |  679 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 679 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/pt/gittutorial.txt

diff --git a/Documentation/pt/gittutorial.txt b/Documentation/pt/gittutorial.txt
new file mode 100644
index 0000000..25bee03
--- /dev/null
+++ b/Documentation/pt/gittutorial.txt
@@ -0,0 +1,679 @@
+gittutorial(7)
+==============
+
+NAME
+----
+gittutorial - Um tutorial de introduÃ§Ã£o ao git (para versÃ£o 1.5.1 ou mais nova)
+
+SYNOPSIS
+--------
+git *
+
+DESCRIPTION
+-----------
+
+Este tutorial explica como importar um novo projeto para o git,
+adicionar mudanÃ§as a ele, e compartilhar mudanÃ§as com outros
+desenvolvedores.
+
+If, ao invÃ©s disso, vocÃª estÃ¡ interessado primariamente em usar git para
+obter um projeto, por exemplo, para testar a Ãºltima versÃ£o, vocÃª pode
+preferir comeÃ§ar com os primeiros dois capÃ­tulos de
+link:user-manual.html[O Manual do UsuÃ¡rio Git].
+
+Primeiro, note que vocÃª pode obter documentaÃ§Ã£o para um comando como
+`git log --graph` com:
+
+------------------------------------------------
+$ man git-log
+------------------------------------------------
+
+ou:
+
+------------------------------------------------
+$ git help log
+------------------------------------------------
+
+Com a Ãºltima forma, vocÃª pode usar o visualizador de manual de sua
+escolha; veja linkgit:git-help[1] para maior informaÃ§Ã£o.
+
+Ã uma boa idÃ©ia se introduzir ao git com seu nome e endereÃ§o pÃºblico de
+email antes de fazer qualquer operaÃ§Ã£o. A maneira mais fÃ¡cil de fazÃª-lo
+Ã©:
+
+------------------------------------------------
+$ git config --global user.name "Seu Nome Vem Aqui"
+$ git config --global user.email voce@seudominio.exemplo.com
+------------------------------------------------
+
+
+Importando um novo projeto
+-----------------------
+
+Assuma que vocÃª tem um tarball project.tar.gz com seu trabalho inicial.
+VocÃª pode colocÃ¡-lo sob controle de revisÃ£o git como a seguir.
+
+------------------------------------------------
+$ tar xzf project.tar.gz
+$ cd project
+$ git init
+------------------------------------------------
+
+Git irÃ¡ responder
+
+------------------------------------------------
+Initialized empty Git repository in .git/
+------------------------------------------------
+
+VocÃª agora iniciou seu diretÃ³rio de trabalho--vocÃª deve ter notado um
+novo diretÃ³rio criado, com o nome de ".git".
+
+A seguir, diga ao git para gravar um instantÃ¢neo do conteÃºdo de todos os
+arquivos sob o diretÃ³rio corrente (note o '.'), com 'git-add':
+
+------------------------------------------------
+$ git add .
+------------------------------------------------
+
+Este instantÃ¢neo estÃ¡ agora armazenado em uma Ã¡rea temporÃ¡ria que o git
+chama de "index" ou Ã­ndice. VocÃª pode permanetemente armazenar o
+conteÃºdo do Ã­ndice no repositÃ³rio com 'git-commit':
+
+------------------------------------------------
+$ git commit
+------------------------------------------------
+
+Isto vai te pedir por uma mensagem de commit. VocÃª agora gravou sua
+primeira versÃ£o de seu projeto no git.
+
+Fazendo mudanÃ§as
+--------------
+
+Modifique alguns arquivos, e, entÃ£o, adicione seu conteÃºdo atualizado ao
+Ã­ndice:
+
+------------------------------------------------
+$ git add file1 file2 file3
+------------------------------------------------
+
+VocÃª estÃ¡ agora pronto para fazer o commit. VocÃª pode ver o que estÃ¡
+para ser gravado usando 'git-diff' com a opÃ§Ã£o --cached:
+
+------------------------------------------------
+$ git diff --cached
+------------------------------------------------
+
+(Sem --cached, o comando 'git-diff' irÃ¡ te mostrar quaisquer mudanÃ§as
+que vocÃª tenha feito mas ainda nÃ£o adicionou ao Ã­ndice.) VocÃª tambÃ©m
+pode obter um breve sumÃ¡rio da situaÃ§Ã£o com 'git-status':
+
+------------------------------------------------
+$ git status
+# On branch master
+# Changes to be committed:
+#   (use "git reset HEAD <file>..." to unstage)
+#
+#	modified:   file1
+#	modified:   file2
+#	modified:   file3
+#
+------------------------------------------------
+
+Se vocÃª precisar fazer qualquer outro ajuste, faÃ§a-o agora, e, entÃ£o,
+adicione qualquer conteÃºdo modificado ao Ã­ndice. Finalmente, grave suas
+mudanÃ§as com:
+
+------------------------------------------------
+$ git commit
+------------------------------------------------
+
+Isto irÃ¡ novamente te pedir por uma mensagem descrevendo a mudanÃ§a, e,
+entÃ£o, gravar a nova versÃ£o do projeto.
+
+Alternativamente, ao invÃ©s de executar 'git-add' antes, vocÃª pode usar
+
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
+
+o que irÃ¡ automaticamente notar quaisquer arquivos modificados (mas nÃ£o
+novos), adicionÃ¡-los ao Ã­ndices, e gravar, tudo em um Ãºnico passo.
+
+Uma nota em mensagens de commit: Apesar de nÃ£o ser exigido, Ã© uma boa
+idÃ©ia comeÃ§ar a mensagem com uma simples e curta (menos de 50
+caracteres) linha sumarizando a mudanÃ§a, seguida de uma linha em branco
+e, entÃ£o, uma descriÃ§Ã£o mais detalhada.  Ferramentas que transformam
+commits em email, por exemplo, usam a primeira linha no campo de
+cabeÃ§alho Subject: e o resto no corpo.
+
+Git rastreia conteÃºdo, nÃ£o arquivos
+----------------------------
+
+Muitos sistemas de controle de revisÃ£o provÃªem um comando `add` que diz
+ao sistema para comeÃ§ar a rastrear mudanÃ§as em um novo arquivo.  O
+comando `add` do git faz algo mais simples e mais poderoso: 'git-add' Ã©
+usado tanto para arquivos novos e arquivos recentemente modificados, e
+em ambos os casos, ele tira o instantÃ¢neo dos arquivos dados e armazena
+o conteÃºdo no Ã­ndice, pronto para inclusÃ£o do prÃ³ximo commit.
+
+Visualizando histÃ³ria do projeto
+-----------------------
+
+Em qualquer ponto vocÃª pode visualizar a histÃ³ria das suas mudanÃ§as
+usando
+
+------------------------------------------------
+$ git log
+------------------------------------------------
+
+Se vocÃª tambÃ©m quer ver a diferenÃ§a completa a cada passo, use
+
+------------------------------------------------
+$ git log -p
+------------------------------------------------
+
+Geralmente, uma visÃ£o geral da mudanÃ§a Ã© Ãºtil para ter a sensaÃ§Ã£o de
+cada passo
+
+------------------------------------------------
+$ git log --stat --summary
+------------------------------------------------
+
+Gerenciando "branches"/ramos
+-----------------
+
+Um simples repositÃ³rio git pode manter mÃºltiplos ramos de
+desenvolvimento.  Para criar um novo ramo chamado "experimental", use
+
+------------------------------------------------
+$ git branch experimental
+------------------------------------------------
+
+Se vocÃª executar agora
+
+------------------------------------------------
+$ git branch
+------------------------------------------------
+
+vocÃª vai obter uma lista de todos os ramos existentes:
+
+------------------------------------------------
+  experimental
+* master
+------------------------------------------------
+
+O ramo "experimental" Ã© o que vocÃª acaba de criar, e o ramo "master" Ã© o
+ramo padrÃ£o que foi criado pra vocÃª automaticamente.  O asterisco marca
+o ramo em que vocÃª estÃ¡ atualmente; digite
+
+------------------------------------------------
+$ git checkout experimental
+------------------------------------------------
+
+para mudar para o ramo experimental.  Agora edite um arquivo, grave a
+mudanÃ§a, e mude de volta para o ramo master:
+
+------------------------------------------------
+(edita arquivo)
+$ git commit -a
+$ git checkout master
+------------------------------------------------
+
+Verifique que a mudanÃ§a que vocÃª fez nÃ£o estÃ¡ mais visÃ­vel, jÃ¡ que ela
+foi feita no ramo experimental e vocÃª estÃ¡ de volta ao ramo master.
+
+VocÃª pode fazer uma mudanÃ§a diferente no ramo master:
+
+------------------------------------------------
+(edit file)
+$ git commit -a
+------------------------------------------------
+
+neste ponto, os dois ramos divergiram, com diferentes mudanÃ§as feitas em
+cada um.  Para unificar as mudanÃ§as feitas no experimental para o
+master, execute
+
+------------------------------------------------
+$ git merge experimental
+------------------------------------------------
+
+Se as mudanÃ§as nÃ£o conflitam, estÃ¡ pronto.  Se existirem conflitos,
+marcadores serÃ£o deixados nos arquivos problemÃ¡ticos exibindo o
+conflito;
+
+------------------------------------------------
+$ git diff
+------------------------------------------------
+
+vai exibir isto.  ApÃ³s vocÃª editar os arquivos para resolver os
+conflitos,
+
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
+
+irÃ¡ gravar o resultado da unificaÃ§Ã£o. Finalmente,
+
+------------------------------------------------
+$ gitk
+------------------------------------------------
+
+vai mostrar uma bela representaÃ§Ã£o grÃ¡fica da histÃ³ria resultante.
+
+Neste ponto vocÃª pode remover seu ramo experimental com
+
+------------------------------------------------
+$ git branch -d experimental
+------------------------------------------------
+
+Este comando garante que as mudanÃ§as no ramo experimental jÃ¡ estÃ£o no
+ramo atual.
+
+Se vocÃª desenvolve em um ramo ideia-louca, e se arrepende, vocÃª pode
+sempre remover o ramo com
+
+-------------------------------------
+$ git branch -D crazy-idea
+-------------------------------------
+
+Ramos sÃ£o baratos e fÃ¡ceis, entÃ£o isto Ã© uma boa maneira de experimentar
+alguma coisa.
+
+Usando git para colaboraÃ§Ã£o
+---------------------------
+
+Suponha que Alice comeÃ§ou um novo projeto com um repositÃ³rio git em
+/home/alice/project, e que Bob, que tem um diretÃ³rio home na mesma
+mÃ¡quina, quer contribuir.
+
+Bob comeÃ§a com:
+
+------------------------------------------------
+bob$ git clone /home/alice/project myrepo
+------------------------------------------------
+
+Isso cria um novo diretÃ³rio "myrepo" contendo um clone do repositÃ³rio de
+Alice.  O clone estÃ¡ no mesmo pÃ© que o projeto original, possuindo sua
+prÃ³pria cÃ³pia da histÃ³ria do projeto original.
+
+Bob entÃ£o faz algumas mudanÃ§as e as grava:
+
+------------------------------------------------
+(editar arquivos)
+bob$ git commit -a
+(repetir conforme necessÃ¡rio)
+------------------------------------------------
+
+Quanto estÃ¡ pronto, ele diz a Alice para puxar as mudanÃ§as do
+repositÃ³rio em /home/bob/myrepo.  Ela o faz com:
+
+------------------------------------------------
+alice$ cd /home/alice/project
+alice$ git pull /home/bob/myrepo master
+------------------------------------------------
+
+Isto unifica as mudanÃ§as do ramo "master" do Bob ao ramo atual de Alice.
+Se Alice fez suas prÃ³prias mudanÃ§as no intervalo, ela, entÃ£o, pode
+precisar corrigir manualmente quaiquer conflitos.  (Note que o argumento
+"master" no comando acima Ã©, de fato, desnecessÃ¡rio, jÃ¡ que Ã© o padrÃ£o.)
+
+O comando "pull" executa, entÃ£o, duas operaÃ§Ãµes: ele obtÃ©m mudanÃ§as de
+um ramo remoto, e, entÃ£o, as unifica no ramo atual.
+
+Note que, em geral, Alice gostaria que suas mudanÃ§as locais fossem
+gravadas antes de iniciar este "pull".  Se o trabalho de Bobo conflita
+com o que Alice fez desde que suas histÃ³rias se ramificaram, Alice irÃ¡
+usar seu diretÃ³rio de trabalho e o Ã­ndice para resolver conflitos, e
+mudanÃ§as locais existentes irÃ£o interferir com o processo de resoluÃ§Ã£o
+de conflitos (git ainda irÃ¡ realizar a obtenÃ§Ã£o mas irÃ¡ se recusar a
+unificar --- Alice terÃ¡ que se livrar de suas mudanÃ§as locais de alguma
+forma e puxar de novo quando isso acontecer).
+
+Alice pode espiar o que Bob fez sem unificar primeiro, usando o comando
+"fetch"; isto permite Alice inspecionar o que Bob fez, usando um sÃ­mbolo
+especial "FETCH_HEAD", com o fim de determinar se ele tem alguma coisa
+que vale puxar, assim:
+
+------------------------------------------------
+alice$ git fetch /home/bob/myrepo master
+alice$ git log -p HEAD..FETCH_HEAD
+------------------------------------------------
+
+Esta operaÃ§Ã£o Ã© segura mesmo se Alice tem mudanÃ§as locais nÃ£o gravadas.
+A notaÃ§Ã£o de intervalo "HEAD..FETCH_HEAD" significa mostrar tudo que Ã©
+alcanÃ§Ã¡vel de FETCH_HEAD mas exclua tudo que Ã© alcanÃ§Ã¡vel de HEAD. Alcie
+jÃ¡ sabe tudo que leva a seu estado atual (HEAD), e revisa o que Bob tem
+em seu estado (FETCH_HEAD) que ela ainda nÃ£o viu com esse comando.
+
+Se Alice quer visualizar o que Bob fez desde que suas histÃ³ria
+ramificaram, ela pode disparar o seguinte comando:
+
+------------------------------------------------
+$ gitk HEAD..FETCH_HEAD
+------------------------------------------------
+
+Isto usar a mesma notaÃ§Ã£o de intervaldo que vimos antes com 'git log'.
+
+Alice pode querer ver o que ambos fizeram desde que ramificaram. Ela
+pode usar a forma com trÃªs pontos ao invÃ©s da forma com dois pontos:
+
+------------------------------------------------
+$ gitk HEAD...FETCH_HEAD
+------------------------------------------------
+
+Isto significa "mostre tudo que Ã© alcanÃ§avel de qualquer um, mas exclua
+tudo que Ã© alcanÃ§avel a partir de ambos".
+This means "show everything that is reachable from either one, but
+exclude anything that is reachable from both of them".
+
+Por favor, note que essas notaÃ§Ãµes de intervalo podem ser usadas tanto
+com gitk quanto com "git log".
+
+ApoÃ³s inspecionar o que Bob fez, se nÃ£o hÃ¡ nada urgente, Alice pode
+decidir continuar trabalhando sem puxar de Bob.  Se a histÃ³ria de Bob
+tem alguma coisa que Alice precisa imediatamente, Alice pode optar por
+separar seu trabalho em progresso primeiro, fazer um "pull", e, entÃ£o,
+finalmente, retomar seu trabalho em progresso em cima da histÃ³ria
+resultante.
+
+Quanto vocÃª estÃ¡ trabalhando em um pequeno grupo unido, nÃ£o Ã© incomum
+interagir com o mesmo repositÃ³rio vÃ¡rias e vÃ¡rias vezes.  Definindo um
+repositÃ³rio remoto antes de tudo, vocÃª pode fazÃª-lo mais facilmente:
+
+------------------------------------------------
+alice$ git remote add bob /home/bob/myrepo
+------------------------------------------------
+
+Com isso, Alice pode executar a primeira parte da operaÃ§Ã£o "pull" usando
+o comando 'git-fetch' sem unificar suas mudanÃ§as com seu prÃ³prio ramo,
+usando:
+
+-------------------------------------
+alice$ git fetch bob
+-------------------------------------
+
+Diferente da forma longa, quando Alice obteve de Bob usando um
+repositÃ³rio remoto antes definido com 'git-remote', o que foi obtido Ã©
+armazenado um ramo remoto, neste caso `bob/master`.  EntÃ£o, apÃ³s isso:
+
+-------------------------------------
+alice$ git log -p master..bob/master
+-------------------------------------
+
+mostra uma lista de todas as mudanÃ§as que Bob fez desde que ramificou do
+ramo master de Alice.
+
+ApÃ³s examinar essas mudanÃ§as, Alice pode unificÃ¡-las em seu ramo master:
+
+-------------------------------------
+alice$ git merge bob/master
+-------------------------------------
+
+Esse `merge` pode tambÃ©m ser feito puxando de seu prÃ³prio ramo remoto,
+assim:
+
+-------------------------------------
+alice$ git pull . remotes/bob/master
+-------------------------------------
+
+Note que 'git pull' sempre unifica ao ramo atual, independente do que
+mais foi dado na linha de comando.
+
+Depois, Bob pode atualizar seu repositÃ³rio com as Ãºltimas mudanÃ§as de
+Alice, usando
+
+-------------------------------------
+bob$ git pull
+-------------------------------------
+
+Note que ele nÃ£o precisa dar o caminho do repositÃ³rio de Alice; quando
+Bob clonou seu repositÃ³rio, o git armazenou a localizaÃ§Ã£o de seu
+repositÃ³rio na configuraÃ§Ã£o do repositÃ³rio, e essa localizaÃ§Ã£o Ã© usada
+para puxar:
+
+-------------------------------------
+bob$ git config --get remote.origin.url
+/home/alice/project
+-------------------------------------
+
+(A configuraÃ§Ã£o completa criada por 'git-clone' Ã© visÃ­vel usando `git
+config -l`, e a pÃ¡gina de manual linkgit:git-config[1] explica o
+significado de cada opÃ§Ã£o.)
+
+Git tambÃ©m mantÃ©m uma cÃ³pia limpa do ramo master de Alice sob o nome
+"origin/master":
+
+-------------------------------------
+bob$ git branch -r
+  origin/master
+-------------------------------------
+
+Se Bob decidir depois em trabalhar em um host diferente, ele ainda pode
+executar clones e puxar usando o protocolo ssh:
+
+-------------------------------------
+bob$ git clone alice.org:/home/alice/project myrepo
+-------------------------------------
+
+Alternativamente, o git tem um protocolo nativo, ou pode usar rsync ou
+http; veja linkgit:git-pull[1] para detalhes.
+
+Git pode tambÃ©m ser usado em um modo parecido com CVS, com um
+repositÃ³rio central para o qual que vÃ¡rios usuÃ¡rios empurram
+modificaÃ§Ãµes; veja linkgit:git-push[1] e linkgit:gitcvs-migration[7].
+
+Explorando histÃ³ria
+-----------------
+
+A histÃ³ria no git Ã© representada como uma sÃ©rie de commits
+interrelacionados.  NÃ³s jÃ¡ vimos que o comando 'git-log' pode listar
+esses commits. Note que a primeira linha de cama entrada no log tambÃ©m
+dÃ¡ o nome para o commit:
+
+-------------------------------------
+$ git log
+commit c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
+Author: Junio C Hamano <junkio@cox.net>
+Date:   Tue May 16 17:18:22 2006 -0700
+
+    merge-base: Clarify the comments on post processing.
+-------------------------------------
+
+NÃ³s podemos dar este nome ao 'git-show' para ver os detalhes sobre este
+commit.
+
+-------------------------------------
+$ git show c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
+-------------------------------------
+
+Mas hÃ¡ outras formas de se referir a commits.  VocÃª pode usar qualquer
+parte inicial do nome que seja longo o bastante para unicamente
+identificar o commit:
+
+-------------------------------------
+$ git show c82a22c39c	# os primeiros caracteres do nome sÃ£o o bastante
+			# usualmente
+$ git show HEAD		# a ponta do ramo atual
+$ git show experimental	# a ponta do ramo "experimental"
+-------------------------------------
+
+Todo commit usualmente tem um commit "pai" que aponta para o estado
+anterior do projeto:
+
+-------------------------------------
+$ git show HEAD^  # para ver o pai de HEAD
+$ git show HEAD^^ # para ver o avÃ´ de HEAD
+$ git show HEAD~4 # para ver o trisavÃ´ de HEAD
+-------------------------------------
+
+Note que commits de unificaÃ§Ã£o podem ter mais de um pai:
+
+-------------------------------------
+$ git show HEAD^1 # mostra o primeiro pai de HEAD (o mesmo que HEAD^)
+$ git show HEAD^2 # mostra o segundo pai de HEAD
+-------------------------------------
+
+VocÃª tambÃ©m pode dar aos commits nomes seus; apÃ³s executar
+
+-------------------------------------
+$ git tag v2.5 1b2e1d63ff
+-------------------------------------
+
+vocÃª pode se referir a 1b2e1d63ff pelo nome "v2.5".  Se vocÃª pretende
+compartilhar esse nome com outras pessoas (por exemplo, para identificar
+uma versÃ£o de lanÃ§amento), vocÃª deve criar um objeto "tag", e talvez
+assinÃ¡-lo; veja linkgit:git-tag[1] para detalhes.
+
+Qualquer comando git que precise conhecer um commit pode receber
+quaisquer desses nomes.  Por exemplo:
+
+-------------------------------------
+$ git diff v2.5 HEAD	 # compara o HEAD atual com v2.5
+$ git branch stable v2.5 # inicia um novo ramo chamado "stable" baseado
+			 # em v2.5
+$ git reset --hard HEAD^ # reseta seu ramo atual e seu diretÃ³rio de
+			 # trabalho a seu estado em HEAD^
+-------------------------------------
+
+Seja cuidadoso com o Ãºltimo comando: alÃ©m de perder quaisquer mudanÃ§as
+em seu diretÃ³rio de trabalho, ele tambÃ©m remove todos os commits
+posteriores desse ramo.  Se esse ramo Ã© o Ãºnico ramo contendo esses
+commits, eles serÃ£o perdidos.  TambÃ©m, nÃ£o use 'git-reset' num ramo
+publicamente visÃ­vel de onde outros desenvolvedores puxam, jÃ¡ que vai
+forÃ§ar unificaÃ§Ãµes desnecessÃ¡rias para que outros desenvolvedores limpem
+a histÃ³ria. Se vocÃª precisa desfazer mudanÃ§as que vocÃª empurrou, use
+'git-revert' no lugar.
+
+O comando 'git-grep' pode buscar strings em qualquer versÃ£o de seu
+projeto, entÃ£o
+
+-------------------------------------
+$ git grep "hello" v2.5
+-------------------------------------
+
+procura por todas as ocorreÃªncias de "hello" em v2.5.
+
+Se vocÃª deixar de fora o nome do commit, 'git-grep' irÃ¡ procurar
+quaisquer dos arquivos que ele gerencia no diretÃ³rio corrente.  EntÃ£o
+
+-------------------------------------
+$ git grep "hello"
+-------------------------------------
+
+Ã© uma forma rÃ¡pida de buscar somente os arquivos que sÃ£o rastreados pelo
+git.
+
+Muitos comandos git tambÃ©m recebem um conjunto de commits, o que pode
+ser especificado de um bom nÃºmero de formas.  Aqui estÃ£o alguns exemplos
+com 'git-log':
+
+-------------------------------------
+$ git log v2.5..v2.6            # commits entre v2.5 e v2.6
+$ git log v2.5..                # commits desde v2.5
+$ git log --since="2 weeks ago" # commits das Ãºltimas 2 semanas
+$ git log v2.5.. Makefile       # commits desde v2.5 que modificam
+				# Makefile
+-------------------------------------
+
+VocÃª tambÃ©m pode dar ao 'git-log' um "intervalo" de commits onde o
+primeiro nÃ£o Ã© necessariamente um ancestral do segundo; por exemplo, se
+as pontas dos ramos "stable" e "master" divergiram de um commit
+comum algum tempo atrÃ¡s, entÃ£o
+
+-------------------------------------
+$ git log stable..experimental
+-------------------------------------
+
+irÃ¡ listas os commits feitos no ramo experimental mas nÃ£o no ramo
+stable, enquanto
+
+-------------------------------------
+$ git log experimental..stable
+-------------------------------------
+
+irÃ¡ listar a lista de commits feitos no ramo stable mas nÃ£o no ramo
+experimental.
+
+O comando 'git-log' tem uma fraquza: ele precisa mostrar os commits em
+uma lista. Quando a histÃ³ria tem linhas de desenvolvimento que
+divergiram e entÃ£o foram unificadas novamente, a ordem em que 'git-log'
+apresenta essas mudanÃ§as Ã© insignificante.
+
+A maioria dos projetos com mÃºltiplos contribuidores (como o kernel
+linux, ou o git mesmo) tem unificaÃ§Ãµes frequentes, e 'gitk' faz um
+trabalho melhor de visualizar sua histÃ³ria.  Por exemplo,
+
+-------------------------------------
+$ gitk --since="2 weeks ago" drivers/
+-------------------------------------
+
+permite vocÃª navegar em quaisquer commits desde as Ãºltimas duas semanas
+de commits que modificaram arquivos sob o diretÃ³rio "drivers".  (Nota:
+vocÃª pode ajustar as fontes do gitk segurando a tecla control enquanto
+pressiona "-" ou "+".)
+
+Finalmente, a maioria dos comandos que recebem nomes de arquivo
+te permitirÃ£o opcionalmente preceder qualquer nome de arquivo por um
+commit, para especificar uma versÃ£o particular do arquivo:
+
+-------------------------------------
+$ git diff v2.5:Makefile HEAD:Makefile.in
+-------------------------------------
+
+VocÃª pode usar 'git-show' para ver tal arquivo:
+
+-------------------------------------
+$ git show v2.5:Makefile
+-------------------------------------
+
+PrÃ³ximos passos
+----------
+
+Este tutorial deve ser o bastante para operar controle de revisÃ£o
+distribuÃ­do bÃ¡sico para seus projetos.  No entanto, para entender
+plenamente a profundidade e o poder do git vocÃª precisa entender duas
+idÃ©ias simples nas quais ele se baseia:
+
+  * A base de objetos Ã© um sistema bem elegante usado para armazenar a
+    histÃ³ria de seu projeto--arquivos, diretÃ³rios, e commits.
+
+  * O arquivo de Ã­ndica Ã© um cache do estado de uma Ã¡rvore de diretÃ³rio,
+    usado para criar commits, restaurar diretÃ³rios de trabalho, e
+    compreender as vÃ¡rias Ã¡rvores involvidas em uma unificaÃ§Ã£o.
+
+Parte dois deste tutorial explica a base de objetos, o arquivo de
+Ã­ndice, e algumas outras coisinhas que vocÃª vai precisar pra usar o
+mÃ¡ximo do git. VocÃª pode encontrÃ¡-la em linkgit:gittutorial-2[7].
+
+Se vocÃª nÃ£o quer continuar do jeito certo, algumas outras disgressÃµes
+que podem ser interessantes neste ponto sÃ£o:
+
+  * linkgit:git-format-patch[1], linkgit:git-am[1]: Estes convertem
+    sÃ©ries de commits em patches em email, e vice-versa, Ãºteis para
+    projetos como o kernel linux que dependem pesadamente em patches
+    enviados por email.
+
+  * linkgit:git-bisect[1]: Quando hÃ¡ uma regressÃ£o em seu projeto, uma
+    forma de rastrear um bug Ã© procurando pela histÃ³ria para encontrar o
+    commit culpado.  Git bisect pode ajudar a executar uma busca binÃ¡ria
+    por esse commit.  Ele Ã© inteligente o bastante para executar uma
+    busca prÃ³xima da Ã³tima mesmo no caso de uma histÃ³ria complexa
+    nÃ£o-linear com muitos ramos unificados.
+
+  * link:everyday.html[GIT diariamente com 20 e tantos comandos]
+
+  * linkgit:gitcvs-migration[7]: Git para usuÃ¡rios de CVS.
+
+Veja TambÃ©m
+--------
+linkgit:gittutorial-2[7],
+linkgit:gitcvs-migration[7],
+linkgit:gitcore-tutorial[7],
+linkgit:gitglossary[7],
+linkgit:git-help[1],
+link:everyday.html[git diariamente],
+link:user-manual.html[O Manual do UsuÃ¡rio git]
+
+GIT
+---
+Parte da suite linkgit:git[1].
-- 
1.6.3

```

## Junio C Hamano, 2009-06-29 15:19

Subject: Re: [PATCH 2/2] Translate the tutorial to Brazillian Portuguese.
Message-ID: <7vljnbcbjs.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vljnbcbjs.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1246284358-26491-1-git-send-email-cascardo@holoscopio.com>

```
Thanks.  Sign-off?

```

## Thadeu Lima de Souza Cascardo, 2009-06-29 15:32

Subject: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <1246289542-1596-1-git-send-email-cascardo@holoscopio.com>
URL: https://gitlist.dev/e/1246289542-1596-1-git-send-email-cascardo%40holoscopio.com
In-Reply-To: <7vljnbcbjs.fsf@alter.siamese.dyndns.org>

```
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
---
 Documentation/pt/gittutorial.txt |  679 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 679 insertions(+), 0 deletions(-)
 create mode 100644 Documentation/pt/gittutorial.txt

diff --git a/Documentation/pt/gittutorial.txt b/Documentation/pt/gittutorial.txt
new file mode 100644
index 0000000..25bee03
--- /dev/null
+++ b/Documentation/pt/gittutorial.txt
@@ -0,0 +1,679 @@
+gittutorial(7)
+==============
+
+NAME
+----
+gittutorial - Um tutorial de introduÃ§Ã£o ao git (para versÃ£o 1.5.1 ou mais nova)
+
+SYNOPSIS
+--------
+git *
+
+DESCRIPTION
+-----------
+
+Este tutorial explica como importar um novo projeto para o git,
+adicionar mudanÃ§as a ele, e compartilhar mudanÃ§as com outros
+desenvolvedores.
+
+If, ao invÃ©s disso, vocÃª estÃ¡ interessado primariamente em usar git para
+obter um projeto, por exemplo, para testar a Ãºltima versÃ£o, vocÃª pode
+preferir comeÃ§ar com os primeiros dois capÃ­tulos de
+link:user-manual.html[O Manual do UsuÃ¡rio Git].
+
+Primeiro, note que vocÃª pode obter documentaÃ§Ã£o para um comando como
+`git log --graph` com:
+
+------------------------------------------------
+$ man git-log
+------------------------------------------------
+
+ou:
+
+------------------------------------------------
+$ git help log
+------------------------------------------------
+
+Com a Ãºltima forma, vocÃª pode usar o visualizador de manual de sua
+escolha; veja linkgit:git-help[1] para maior informaÃ§Ã£o.
+
+Ã uma boa idÃ©ia se introduzir ao git com seu nome e endereÃ§o pÃºblico de
+email antes de fazer qualquer operaÃ§Ã£o. A maneira mais fÃ¡cil de fazÃª-lo
+Ã©:
+
+------------------------------------------------
+$ git config --global user.name "Seu Nome Vem Aqui"
+$ git config --global user.email voce@seudominio.exemplo.com
+------------------------------------------------
+
+
+Importando um novo projeto
+-----------------------
+
+Assuma que vocÃª tem um tarball project.tar.gz com seu trabalho inicial.
+VocÃª pode colocÃ¡-lo sob controle de revisÃ£o git como a seguir.
+
+------------------------------------------------
+$ tar xzf project.tar.gz
+$ cd project
+$ git init
+------------------------------------------------
+
+Git irÃ¡ responder
+
+------------------------------------------------
+Initialized empty Git repository in .git/
+------------------------------------------------
+
+VocÃª agora iniciou seu diretÃ³rio de trabalho--vocÃª deve ter notado um
+novo diretÃ³rio criado, com o nome de ".git".
+
+A seguir, diga ao git para gravar um instantÃ¢neo do conteÃºdo de todos os
+arquivos sob o diretÃ³rio corrente (note o '.'), com 'git-add':
+
+------------------------------------------------
+$ git add .
+------------------------------------------------
+
+Este instantÃ¢neo estÃ¡ agora armazenado em uma Ã¡rea temporÃ¡ria que o git
+chama de "index" ou Ã­ndice. VocÃª pode permanetemente armazenar o
+conteÃºdo do Ã­ndice no repositÃ³rio com 'git-commit':
+
+------------------------------------------------
+$ git commit
+------------------------------------------------
+
+Isto vai te pedir por uma mensagem de commit. VocÃª agora gravou sua
+primeira versÃ£o de seu projeto no git.
+
+Fazendo mudanÃ§as
+--------------
+
+Modifique alguns arquivos, e, entÃ£o, adicione seu conteÃºdo atualizado ao
+Ã­ndice:
+
+------------------------------------------------
+$ git add file1 file2 file3
+------------------------------------------------
+
+VocÃª estÃ¡ agora pronto para fazer o commit. VocÃª pode ver o que estÃ¡
+para ser gravado usando 'git-diff' com a opÃ§Ã£o --cached:
+
+------------------------------------------------
+$ git diff --cached
+------------------------------------------------
+
+(Sem --cached, o comando 'git-diff' irÃ¡ te mostrar quaisquer mudanÃ§as
+que vocÃª tenha feito mas ainda nÃ£o adicionou ao Ã­ndice.) VocÃª tambÃ©m
+pode obter um breve sumÃ¡rio da situaÃ§Ã£o com 'git-status':
+
+------------------------------------------------
+$ git status
+# On branch master
+# Changes to be committed:
+#   (use "git reset HEAD <file>..." to unstage)
+#
+#	modified:   file1
+#	modified:   file2
+#	modified:   file3
+#
+------------------------------------------------
+
+Se vocÃª precisar fazer qualquer outro ajuste, faÃ§a-o agora, e, entÃ£o,
+adicione qualquer conteÃºdo modificado ao Ã­ndice. Finalmente, grave suas
+mudanÃ§as com:
+
+------------------------------------------------
+$ git commit
+------------------------------------------------
+
+Isto irÃ¡ novamente te pedir por uma mensagem descrevendo a mudanÃ§a, e,
+entÃ£o, gravar a nova versÃ£o do projeto.
+
+Alternativamente, ao invÃ©s de executar 'git-add' antes, vocÃª pode usar
+
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
+
+o que irÃ¡ automaticamente notar quaisquer arquivos modificados (mas nÃ£o
+novos), adicionÃ¡-los ao Ã­ndices, e gravar, tudo em um Ãºnico passo.
+
+Uma nota em mensagens de commit: Apesar de nÃ£o ser exigido, Ã© uma boa
+idÃ©ia comeÃ§ar a mensagem com uma simples e curta (menos de 50
+caracteres) linha sumarizando a mudanÃ§a, seguida de uma linha em branco
+e, entÃ£o, uma descriÃ§Ã£o mais detalhada.  Ferramentas que transformam
+commits em email, por exemplo, usam a primeira linha no campo de
+cabeÃ§alho Subject: e o resto no corpo.
+
+Git rastreia conteÃºdo, nÃ£o arquivos
+----------------------------
+
+Muitos sistemas de controle de revisÃ£o provÃªem um comando `add` que diz
+ao sistema para comeÃ§ar a rastrear mudanÃ§as em um novo arquivo.  O
+comando `add` do git faz algo mais simples e mais poderoso: 'git-add' Ã©
+usado tanto para arquivos novos e arquivos recentemente modificados, e
+em ambos os casos, ele tira o instantÃ¢neo dos arquivos dados e armazena
+o conteÃºdo no Ã­ndice, pronto para inclusÃ£o do prÃ³ximo commit.
+
+Visualizando histÃ³ria do projeto
+-----------------------
+
+Em qualquer ponto vocÃª pode visualizar a histÃ³ria das suas mudanÃ§as
+usando
+
+------------------------------------------------
+$ git log
+------------------------------------------------
+
+Se vocÃª tambÃ©m quer ver a diferenÃ§a completa a cada passo, use
+
+------------------------------------------------
+$ git log -p
+------------------------------------------------
+
+Geralmente, uma visÃ£o geral da mudanÃ§a Ã© Ãºtil para ter a sensaÃ§Ã£o de
+cada passo
+
+------------------------------------------------
+$ git log --stat --summary
+------------------------------------------------
+
+Gerenciando "branches"/ramos
+-----------------
+
+Um simples repositÃ³rio git pode manter mÃºltiplos ramos de
+desenvolvimento.  Para criar um novo ramo chamado "experimental", use
+
+------------------------------------------------
+$ git branch experimental
+------------------------------------------------
+
+Se vocÃª executar agora
+
+------------------------------------------------
+$ git branch
+------------------------------------------------
+
+vocÃª vai obter uma lista de todos os ramos existentes:
+
+------------------------------------------------
+  experimental
+* master
+------------------------------------------------
+
+O ramo "experimental" Ã© o que vocÃª acaba de criar, e o ramo "master" Ã© o
+ramo padrÃ£o que foi criado pra vocÃª automaticamente.  O asterisco marca
+o ramo em que vocÃª estÃ¡ atualmente; digite
+
+------------------------------------------------
+$ git checkout experimental
+------------------------------------------------
+
+para mudar para o ramo experimental.  Agora edite um arquivo, grave a
+mudanÃ§a, e mude de volta para o ramo master:
+
+------------------------------------------------
+(edita arquivo)
+$ git commit -a
+$ git checkout master
+------------------------------------------------
+
+Verifique que a mudanÃ§a que vocÃª fez nÃ£o estÃ¡ mais visÃ­vel, jÃ¡ que ela
+foi feita no ramo experimental e vocÃª estÃ¡ de volta ao ramo master.
+
+VocÃª pode fazer uma mudanÃ§a diferente no ramo master:
+
+------------------------------------------------
+(edit file)
+$ git commit -a
+------------------------------------------------
+
+neste ponto, os dois ramos divergiram, com diferentes mudanÃ§as feitas em
+cada um.  Para unificar as mudanÃ§as feitas no experimental para o
+master, execute
+
+------------------------------------------------
+$ git merge experimental
+------------------------------------------------
+
+Se as mudanÃ§as nÃ£o conflitam, estÃ¡ pronto.  Se existirem conflitos,
+marcadores serÃ£o deixados nos arquivos problemÃ¡ticos exibindo o
+conflito;
+
+------------------------------------------------
+$ git diff
+------------------------------------------------
+
+vai exibir isto.  ApÃ³s vocÃª editar os arquivos para resolver os
+conflitos,
+
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
+
+irÃ¡ gravar o resultado da unificaÃ§Ã£o. Finalmente,
+
+------------------------------------------------
+$ gitk
+------------------------------------------------
+
+vai mostrar uma bela representaÃ§Ã£o grÃ¡fica da histÃ³ria resultante.
+
+Neste ponto vocÃª pode remover seu ramo experimental com
+
+------------------------------------------------
+$ git branch -d experimental
+------------------------------------------------
+
+Este comando garante que as mudanÃ§as no ramo experimental jÃ¡ estÃ£o no
+ramo atual.
+
+Se vocÃª desenvolve em um ramo ideia-louca, e se arrepende, vocÃª pode
+sempre remover o ramo com
+
+-------------------------------------
+$ git branch -D crazy-idea
+-------------------------------------
+
+Ramos sÃ£o baratos e fÃ¡ceis, entÃ£o isto Ã© uma boa maneira de experimentar
+alguma coisa.
+
+Usando git para colaboraÃ§Ã£o
+---------------------------
+
+Suponha que Alice comeÃ§ou um novo projeto com um repositÃ³rio git em
+/home/alice/project, e que Bob, que tem um diretÃ³rio home na mesma
+mÃ¡quina, quer contribuir.
+
+Bob comeÃ§a com:
+
+------------------------------------------------
+bob$ git clone /home/alice/project myrepo
+------------------------------------------------
+
+Isso cria um novo diretÃ³rio "myrepo" contendo um clone do repositÃ³rio de
+Alice.  O clone estÃ¡ no mesmo pÃ© que o projeto original, possuindo sua
+prÃ³pria cÃ³pia da histÃ³ria do projeto original.
+
+Bob entÃ£o faz algumas mudanÃ§as e as grava:
+
+------------------------------------------------
+(editar arquivos)
+bob$ git commit -a
+(repetir conforme necessÃ¡rio)
+------------------------------------------------
+
+Quanto estÃ¡ pronto, ele diz a Alice para puxar as mudanÃ§as do
+repositÃ³rio em /home/bob/myrepo.  Ela o faz com:
+
+------------------------------------------------
+alice$ cd /home/alice/project
+alice$ git pull /home/bob/myrepo master
+------------------------------------------------
+
+Isto unifica as mudanÃ§as do ramo "master" do Bob ao ramo atual de Alice.
+Se Alice fez suas prÃ³prias mudanÃ§as no intervalo, ela, entÃ£o, pode
+precisar corrigir manualmente quaiquer conflitos.  (Note que o argumento
+"master" no comando acima Ã©, de fato, desnecessÃ¡rio, jÃ¡ que Ã© o padrÃ£o.)
+
+O comando "pull" executa, entÃ£o, duas operaÃ§Ãµes: ele obtÃ©m mudanÃ§as de
+um ramo remoto, e, entÃ£o, as unifica no ramo atual.
+
+Note que, em geral, Alice gostaria que suas mudanÃ§as locais fossem
+gravadas antes de iniciar este "pull".  Se o trabalho de Bobo conflita
+com o que Alice fez desde que suas histÃ³rias se ramificaram, Alice irÃ¡
+usar seu diretÃ³rio de trabalho e o Ã­ndice para resolver conflitos, e
+mudanÃ§as locais existentes irÃ£o interferir com o processo de resoluÃ§Ã£o
+de conflitos (git ainda irÃ¡ realizar a obtenÃ§Ã£o mas irÃ¡ se recusar a
+unificar --- Alice terÃ¡ que se livrar de suas mudanÃ§as locais de alguma
+forma e puxar de novo quando isso acontecer).
+
+Alice pode espiar o que Bob fez sem unificar primeiro, usando o comando
+"fetch"; isto permite Alice inspecionar o que Bob fez, usando um sÃ­mbolo
+especial "FETCH_HEAD", com o fim de determinar se ele tem alguma coisa
+que vale puxar, assim:
+
+------------------------------------------------
+alice$ git fetch /home/bob/myrepo master
+alice$ git log -p HEAD..FETCH_HEAD
+------------------------------------------------
+
+Esta operaÃ§Ã£o Ã© segura mesmo se Alice tem mudanÃ§as locais nÃ£o gravadas.
+A notaÃ§Ã£o de intervalo "HEAD..FETCH_HEAD" significa mostrar tudo que Ã©
+alcanÃ§Ã¡vel de FETCH_HEAD mas exclua tudo que Ã© alcanÃ§Ã¡vel de HEAD. Alcie
+jÃ¡ sabe tudo que leva a seu estado atual (HEAD), e revisa o que Bob tem
+em seu estado (FETCH_HEAD) que ela ainda nÃ£o viu com esse comando.
+
+Se Alice quer visualizar o que Bob fez desde que suas histÃ³ria
+ramificaram, ela pode disparar o seguinte comando:
+
+------------------------------------------------
+$ gitk HEAD..FETCH_HEAD
+------------------------------------------------
+
+Isto usar a mesma notaÃ§Ã£o de intervaldo que vimos antes com 'git log'.
+
+Alice pode querer ver o que ambos fizeram desde que ramificaram. Ela
+pode usar a forma com trÃªs pontos ao invÃ©s da forma com dois pontos:
+
+------------------------------------------------
+$ gitk HEAD...FETCH_HEAD
+------------------------------------------------
+
+Isto significa "mostre tudo que Ã© alcanÃ§avel de qualquer um, mas exclua
+tudo que Ã© alcanÃ§avel a partir de ambos".
+This means "show everything that is reachable from either one, but
+exclude anything that is reachable from both of them".
+
+Por favor, note que essas notaÃ§Ãµes de intervalo podem ser usadas tanto
+com gitk quanto com "git log".
+
+ApoÃ³s inspecionar o que Bob fez, se nÃ£o hÃ¡ nada urgente, Alice pode
+decidir continuar trabalhando sem puxar de Bob.  Se a histÃ³ria de Bob
+tem alguma coisa que Alice precisa imediatamente, Alice pode optar por
+separar seu trabalho em progresso primeiro, fazer um "pull", e, entÃ£o,
+finalmente, retomar seu trabalho em progresso em cima da histÃ³ria
+resultante.
+
+Quanto vocÃª estÃ¡ trabalhando em um pequeno grupo unido, nÃ£o Ã© incomum
+interagir com o mesmo repositÃ³rio vÃ¡rias e vÃ¡rias vezes.  Definindo um
+repositÃ³rio remoto antes de tudo, vocÃª pode fazÃª-lo mais facilmente:
+
+------------------------------------------------
+alice$ git remote add bob /home/bob/myrepo
+------------------------------------------------
+
+Com isso, Alice pode executar a primeira parte da operaÃ§Ã£o "pull" usando
+o comando 'git-fetch' sem unificar suas mudanÃ§as com seu prÃ³prio ramo,
+usando:
+
+-------------------------------------
+alice$ git fetch bob
+-------------------------------------
+
+Diferente da forma longa, quando Alice obteve de Bob usando um
+repositÃ³rio remoto antes definido com 'git-remote', o que foi obtido Ã©
+armazenado um ramo remoto, neste caso `bob/master`.  EntÃ£o, apÃ³s isso:
+
+-------------------------------------
+alice$ git log -p master..bob/master
+-------------------------------------
+
+mostra uma lista de todas as mudanÃ§as que Bob fez desde que ramificou do
+ramo master de Alice.
+
+ApÃ³s examinar essas mudanÃ§as, Alice pode unificÃ¡-las em seu ramo master:
+
+-------------------------------------
+alice$ git merge bob/master
+-------------------------------------
+
+Esse `merge` pode tambÃ©m ser feito puxando de seu prÃ³prio ramo remoto,
+assim:
+
+-------------------------------------
+alice$ git pull . remotes/bob/master
+-------------------------------------
+
+Note que 'git pull' sempre unifica ao ramo atual, independente do que
+mais foi dado na linha de comando.
+
+Depois, Bob pode atualizar seu repositÃ³rio com as Ãºltimas mudanÃ§as de
+Alice, usando
+
+-------------------------------------
+bob$ git pull
+-------------------------------------
+
+Note que ele nÃ£o precisa dar o caminho do repositÃ³rio de Alice; quando
+Bob clonou seu repositÃ³rio, o git armazenou a localizaÃ§Ã£o de seu
+repositÃ³rio na configuraÃ§Ã£o do repositÃ³rio, e essa localizaÃ§Ã£o Ã© usada
+para puxar:
+
+-------------------------------------
+bob$ git config --get remote.origin.url
+/home/alice/project
+-------------------------------------
+
+(A configuraÃ§Ã£o completa criada por 'git-clone' Ã© visÃ­vel usando `git
+config -l`, e a pÃ¡gina de manual linkgit:git-config[1] explica o
+significado de cada opÃ§Ã£o.)
+
+Git tambÃ©m mantÃ©m uma cÃ³pia limpa do ramo master de Alice sob o nome
+"origin/master":
+
+-------------------------------------
+bob$ git branch -r
+  origin/master
+-------------------------------------
+
+Se Bob decidir depois em trabalhar em um host diferente, ele ainda pode
+executar clones e puxar usando o protocolo ssh:
+
+-------------------------------------
+bob$ git clone alice.org:/home/alice/project myrepo
+-------------------------------------
+
+Alternativamente, o git tem um protocolo nativo, ou pode usar rsync ou
+http; veja linkgit:git-pull[1] para detalhes.
+
+Git pode tambÃ©m ser usado em um modo parecido com CVS, com um
+repositÃ³rio central para o qual que vÃ¡rios usuÃ¡rios empurram
+modificaÃ§Ãµes; veja linkgit:git-push[1] e linkgit:gitcvs-migration[7].
+
+Explorando histÃ³ria
+-----------------
+
+A histÃ³ria no git Ã© representada como uma sÃ©rie de commits
+interrelacionados.  NÃ³s jÃ¡ vimos que o comando 'git-log' pode listar
+esses commits. Note que a primeira linha de cama entrada no log tambÃ©m
+dÃ¡ o nome para o commit:
+
+-------------------------------------
+$ git log
+commit c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
+Author: Junio C Hamano <junkio@cox.net>
+Date:   Tue May 16 17:18:22 2006 -0700
+
+    merge-base: Clarify the comments on post processing.
+-------------------------------------
+
+NÃ³s podemos dar este nome ao 'git-show' para ver os detalhes sobre este
+commit.
+
+-------------------------------------
+$ git show c82a22c39cbc32576f64f5c6b3f24b99ea8149c7
+-------------------------------------
+
+Mas hÃ¡ outras formas de se referir a commits.  VocÃª pode usar qualquer
+parte inicial do nome que seja longo o bastante para unicamente
+identificar o commit:
+
+-------------------------------------
+$ git show c82a22c39c	# os primeiros caracteres do nome sÃ£o o bastante
+			# usualmente
+$ git show HEAD		# a ponta do ramo atual
+$ git show experimental	# a ponta do ramo "experimental"
+-------------------------------------
+
+Todo commit usualmente tem um commit "pai" que aponta para o estado
+anterior do projeto:
+
+-------------------------------------
+$ git show HEAD^  # para ver o pai de HEAD
+$ git show HEAD^^ # para ver o avÃ´ de HEAD
+$ git show HEAD~4 # para ver o trisavÃ´ de HEAD
+-------------------------------------
+
+Note que commits de unificaÃ§Ã£o podem ter mais de um pai:
+
+-------------------------------------
+$ git show HEAD^1 # mostra o primeiro pai de HEAD (o mesmo que HEAD^)
+$ git show HEAD^2 # mostra o segundo pai de HEAD
+-------------------------------------
+
+VocÃª tambÃ©m pode dar aos commits nomes seus; apÃ³s executar
+
+-------------------------------------
+$ git tag v2.5 1b2e1d63ff
+-------------------------------------
+
+vocÃª pode se referir a 1b2e1d63ff pelo nome "v2.5".  Se vocÃª pretende
+compartilhar esse nome com outras pessoas (por exemplo, para identificar
+uma versÃ£o de lanÃ§amento), vocÃª deve criar um objeto "tag", e talvez
+assinÃ¡-lo; veja linkgit:git-tag[1] para detalhes.
+
+Qualquer comando git que precise conhecer um commit pode receber
+quaisquer desses nomes.  Por exemplo:
+
+-------------------------------------
+$ git diff v2.5 HEAD	 # compara o HEAD atual com v2.5
+$ git branch stable v2.5 # inicia um novo ramo chamado "stable" baseado
+			 # em v2.5
+$ git reset --hard HEAD^ # reseta seu ramo atual e seu diretÃ³rio de
+			 # trabalho a seu estado em HEAD^
+-------------------------------------
+
+Seja cuidadoso com o Ãºltimo comando: alÃ©m de perder quaisquer mudanÃ§as
+em seu diretÃ³rio de trabalho, ele tambÃ©m remove todos os commits
+posteriores desse ramo.  Se esse ramo Ã© o Ãºnico ramo contendo esses
+commits, eles serÃ£o perdidos.  TambÃ©m, nÃ£o use 'git-reset' num ramo
+publicamente visÃ­vel de onde outros desenvolvedores puxam, jÃ¡ que vai
+forÃ§ar unificaÃ§Ãµes desnecessÃ¡rias para que outros desenvolvedores limpem
+a histÃ³ria. Se vocÃª precisa desfazer mudanÃ§as que vocÃª empurrou, use
+'git-revert' no lugar.
+
+O comando 'git-grep' pode buscar strings em qualquer versÃ£o de seu
+projeto, entÃ£o
+
+-------------------------------------
+$ git grep "hello" v2.5
+-------------------------------------
+
+procura por todas as ocorreÃªncias de "hello" em v2.5.
+
+Se vocÃª deixar de fora o nome do commit, 'git-grep' irÃ¡ procurar
+quaisquer dos arquivos que ele gerencia no diretÃ³rio corrente.  EntÃ£o
+
+-------------------------------------
+$ git grep "hello"
+-------------------------------------
+
+Ã© uma forma rÃ¡pida de buscar somente os arquivos que sÃ£o rastreados pelo
+git.
+
+Muitos comandos git tambÃ©m recebem um conjunto de commits, o que pode
+ser especificado de um bom nÃºmero de formas.  Aqui estÃ£o alguns exemplos
+com 'git-log':
+
+-------------------------------------
+$ git log v2.5..v2.6            # commits entre v2.5 e v2.6
+$ git log v2.5..                # commits desde v2.5
+$ git log --since="2 weeks ago" # commits das Ãºltimas 2 semanas
+$ git log v2.5.. Makefile       # commits desde v2.5 que modificam
+				# Makefile
+-------------------------------------
+
+VocÃª tambÃ©m pode dar ao 'git-log' um "intervalo" de commits onde o
+primeiro nÃ£o Ã© necessariamente um ancestral do segundo; por exemplo, se
+as pontas dos ramos "stable" e "master" divergiram de um commit
+comum algum tempo atrÃ¡s, entÃ£o
+
+-------------------------------------
+$ git log stable..experimental
+-------------------------------------
+
+irÃ¡ listas os commits feitos no ramo experimental mas nÃ£o no ramo
+stable, enquanto
+
+-------------------------------------
+$ git log experimental..stable
+-------------------------------------
+
+irÃ¡ listar a lista de commits feitos no ramo stable mas nÃ£o no ramo
+experimental.
+
+O comando 'git-log' tem uma fraquza: ele precisa mostrar os commits em
+uma lista. Quando a histÃ³ria tem linhas de desenvolvimento que
+divergiram e entÃ£o foram unificadas novamente, a ordem em que 'git-log'
+apresenta essas mudanÃ§as Ã© insignificante.
+
+A maioria dos projetos com mÃºltiplos contribuidores (como o kernel
+linux, ou o git mesmo) tem unificaÃ§Ãµes frequentes, e 'gitk' faz um
+trabalho melhor de visualizar sua histÃ³ria.  Por exemplo,
+
+-------------------------------------
+$ gitk --since="2 weeks ago" drivers/
+-------------------------------------
+
+permite vocÃª navegar em quaisquer commits desde as Ãºltimas duas semanas
+de commits que modificaram arquivos sob o diretÃ³rio "drivers".  (Nota:
+vocÃª pode ajustar as fontes do gitk segurando a tecla control enquanto
+pressiona "-" ou "+".)
+
+Finalmente, a maioria dos comandos que recebem nomes de arquivo
+te permitirÃ£o opcionalmente preceder qualquer nome de arquivo por um
+commit, para especificar uma versÃ£o particular do arquivo:
+
+-------------------------------------
+$ git diff v2.5:Makefile HEAD:Makefile.in
+-------------------------------------
+
+VocÃª pode usar 'git-show' para ver tal arquivo:
+
+-------------------------------------
+$ git show v2.5:Makefile
+-------------------------------------
+
+PrÃ³ximos passos
+----------
+
+Este tutorial deve ser o bastante para operar controle de revisÃ£o
+distribuÃ­do bÃ¡sico para seus projetos.  No entanto, para entender
+plenamente a profundidade e o poder do git vocÃª precisa entender duas
+idÃ©ias simples nas quais ele se baseia:
+
+  * A base de objetos Ã© um sistema bem elegante usado para armazenar a
+    histÃ³ria de seu projeto--arquivos, diretÃ³rios, e commits.
+
+  * O arquivo de Ã­ndica Ã© um cache do estado de uma Ã¡rvore de diretÃ³rio,
+    usado para criar commits, restaurar diretÃ³rios de trabalho, e
+    compreender as vÃ¡rias Ã¡rvores involvidas em uma unificaÃ§Ã£o.
+
+Parte dois deste tutorial explica a base de objetos, o arquivo de
+Ã­ndice, e algumas outras coisinhas que vocÃª vai precisar pra usar o
+mÃ¡ximo do git. VocÃª pode encontrÃ¡-la em linkgit:gittutorial-2[7].
+
+Se vocÃª nÃ£o quer continuar do jeito certo, algumas outras disgressÃµes
+que podem ser interessantes neste ponto sÃ£o:
+
+  * linkgit:git-format-patch[1], linkgit:git-am[1]: Estes convertem
+    sÃ©ries de commits em patches em email, e vice-versa, Ãºteis para
+    projetos como o kernel linux que dependem pesadamente em patches
+    enviados por email.
+
+  * linkgit:git-bisect[1]: Quando hÃ¡ uma regressÃ£o em seu projeto, uma
+    forma de rastrear um bug Ã© procurando pela histÃ³ria para encontrar o
+    commit culpado.  Git bisect pode ajudar a executar uma busca binÃ¡ria
+    por esse commit.  Ele Ã© inteligente o bastante para executar uma
+    busca prÃ³xima da Ã³tima mesmo no caso de uma histÃ³ria complexa
+    nÃ£o-linear com muitos ramos unificados.
+
+  * link:everyday.html[GIT diariamente com 20 e tantos comandos]
+
+  * linkgit:gitcvs-migration[7]: Git para usuÃ¡rios de CVS.
+
+Veja TambÃ©m
+--------
+linkgit:gittutorial-2[7],
+linkgit:gitcvs-migration[7],
+linkgit:gitcore-tutorial[7],
+linkgit:gitglossary[7],
+linkgit:git-help[1],
+link:everyday.html[git diariamente],
+link:user-manual.html[O Manual do UsuÃ¡rio git]
+
+GIT
+---
+Parte da suite linkgit:git[1].
-- 
1.6.3

```

## Junio C Hamano, 2009-06-29 16:08

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <7vfxdjc9b3.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vfxdjc9b3.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1246289542-1596-1-git-send-email-cascardo@holoscopio.com>

```
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> writes:

> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>

Thanks.

> +Você também pode dar ao 'git-log' um "intervalo" de commits onde o
> +primeiro não é necessariamente um ancestral do segundo; por exemplo, se
> +as pontas dos ramos "stable" e "master" divergiram de um commit
> +comum algum tempo atrás, então
> +
> +-------------------------------------
> +$ git log stable..experimental
> +-------------------------------------
> +
> +irá listas os commits feitos no ramo experimental mas não no ramo
> +stable, enquanto
> +
> +-------------------------------------
> +$ git log experimental..stable
> +-------------------------------------
> +
> +irá listar a lista de commits feitos no ramo stable mas não no ramo
> +experimental.
> +

I think you would want to update this part to match what you did in your
[PATCH 1/2 v2].

    By the way, I think your MUA sent quoted-printable UTF-8 but somewhere
    between your keyboard and vger the message was marked with content-type
    charset=ISO-8859-1); I fixed it up when quoting the above.

I am somewhat worried about the way how this translation will be
maintained to keep in sync with the authoritative English version.
Narita-san (CC'ed) who translated the document to Japanese did this:

    gittutorial(7)
    ==============
    // = gittutorial(7)

    NAME
    ----
    // == NAME
    gittutorial - A tutorial introduction to git (for version 1.5.1 or newer)
    // gittutorial - git チュートリアル (バージョン 1.5.1 以降用)

and the idea seems that without // (comments in AsciiDoc markup) it
matches the English copy, and after passing sed -ne 's|^// ||p' it yields
Japanese version.  Narita-san's translation can be seen at

    http://github.com/yasuaki/git-manual-jp.git/Documentation

if anybody is interested.

With this format, merging upstream changes may not work as smoothly as it
could be, but at least you can check which part of your translation is
based on a stale copy with something like this arrangement.

I am wondering if it would be a good idea to extend Narita-san's scheme so
that we can keep a single source, perhaps like:

    = gittutorial(7)
    // ja = gittutorial(7)
    // pt = gittutorial(7)
    == NAME
    // ja = NAME
    // pt = NAME
    gittutorial - A tutorial introduction to git (for version 1.5.1 or ...
    // ja gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
    // pt gittutorial - Um tutorial de introdução ao git (para versão 1....

Then whenever somebody makes a change to the English version, he can and
should also mark the corresponding translated versions "stale", so that it
is easier to spot by translators.

    diff --git a/gittutorial.txt b/gittutorial.txt
    index 4478300..02d67d3 100644
    --- a/gittutorial.txt
    +++ b/gittutorial.txt
    @@ -4,7 +4,6 @@
     == NAME
     // ja = NAME
     // pt = NAME
    -gittutorial - A tutorial introduction to git (for version 1.5.1 or n...
    -// ja gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
    -// pt gittutorial - Um tutorial de introdução ao git (para versão 1....
    -
    +gittutorial - A tutorial introduction to git (for version 1.6.3 or n...
    +// **stale** ja gittutorial - git チュートリアル (バージョン 1.5.1 ...
    +// **stale** pt gittutorial - Um tutorial de introdução ao git (par...

As long as all the translations use the same encoding (I think UTF-8 is
the only practical choice for this), keeping translated strings in a
single file would be doable.

I however am not sure how practical it would be to force people to look at
the *.txt version of document, only 1/n lines of which is now readable by
him (if you are like a typical American who understands only English ;-).

Thoughts?

```

## Thadeu Lima de Souza Cascardo, 2009-06-29 16:27

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <20090629162738.GE4327@vespa.holoscopio.com>
URL: https://gitlist.dev/e/20090629162738.GE4327%40vespa.holoscopio.com
In-Reply-To: <7vfxdjc9b3.fsf@alter.siamese.dyndns.org>

```
On Mon, Jun 29, 2009 at 09:08:00AM -0700, Junio C Hamano wrote:
> Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> writes:
> 
> > Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
> 
> Thanks.
> 
> > +Você também pode dar ao 'git-log' um "intervalo" de commits onde o
> > +primeiro não é necessariamente um ancestral do segundo; por exemplo, se
> > +as pontas dos ramos "stable" e "master" divergiram de um commit
> > +comum algum tempo atrás, então
> > +
> > +-------------------------------------
> > +$ git log stable..experimental
> > +-------------------------------------
> > +
> > +irá listas os commits feitos no ramo experimental mas não no ramo
> > +stable, enquanto
> > +
> > +-------------------------------------
> > +$ git log experimental..stable
> > +-------------------------------------
> > +
> > +irá listar a lista de commits feitos no ramo stable mas não no ramo
> > +experimental.
> > +
> 
> I think you would want to update this part to match what you did in your
> [PATCH 1/2 v2].
> 

Well remembered. Thanks.

>     By the way, I think your MUA sent quoted-printable UTF-8 but somewhere
>     between your keyboard and vger the message was marked with content-type
>     charset=ISO-8859-1); I fixed it up when quoting the above.
> 

I am going to take a look at it.

> I am somewhat worried about the way how this translation will be
> maintained to keep in sync with the authoritative English version.
> Narita-san (CC'ed) who translated the document to Japanese did this:
> 
>     gittutorial(7)
>     ==============
>     // = gittutorial(7)
> 
>     NAME
>     ----
>     // == NAME
>     gittutorial - A tutorial introduction to git (for version 1.5.1 or newer)
>     // gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
> 
> and the idea seems that without // (comments in AsciiDoc markup) it
> matches the English copy, and after passing sed -ne 's|^// ||p' it yields
> Japanese version.  Narita-san's translation can be seen at
> 
>     http://github.com/yasuaki/git-manual-jp.git/Documentation
> 
> if anybody is interested.
> 
> With this format, merging upstream changes may not work as smoothly as it
> could be, but at least you can check which part of your translation is
> based on a stale copy with something like this arrangement.
> 
> I am wondering if it would be a good idea to extend Narita-san's scheme so
> that we can keep a single source, perhaps like:
> 
>     = gittutorial(7)
>     // ja = gittutorial(7)
>     // pt = gittutorial(7)
>     == NAME
>     // ja = NAME
>     // pt = NAME
>     gittutorial - A tutorial introduction to git (for version 1.5.1 or ...
>     // ja gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
>     // pt gittutorial - Um tutorial de introdução ao git (para versão 1....
> 
> Then whenever somebody makes a change to the English version, he can and
> should also mark the corresponding translated versions "stale", so that it
> is easier to spot by translators.
> 
>     diff --git a/gittutorial.txt b/gittutorial.txt
>     index 4478300..02d67d3 100644
>     --- a/gittutorial.txt
>     +++ b/gittutorial.txt
>     @@ -4,7 +4,6 @@
>      == NAME
>      // ja = NAME
>      // pt = NAME
>     -gittutorial - A tutorial introduction to git (for version 1.5.1 or n...
>     -// ja gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
>     -// pt gittutorial - Um tutorial de introdução ao git (para versão 1....
>     -
>     +gittutorial - A tutorial introduction to git (for version 1.6.3 or n...
>     +// **stale** ja gittutorial - git チュートリアル (バージョン 1.5.1 ...
>     +// **stale** pt gittutorial - Um tutorial de introdução ao git (par...
> 
> As long as all the translations use the same encoding (I think UTF-8 is
> the only practical choice for this), keeping translated strings in a
> single file would be doable.
> 
> I however am not sure how practical it would be to force people to look at
> the *.txt version of document, only 1/n lines of which is now readable by
> him (if you are like a typical American who understands only English ;-).
> 
> Thoughts?

I think that using something like po would be better. There are tools
that can extract and update the template messages from many differente
sources. Adapting them to produce a template file from gittutorial.txt
would allow translators to verify how stale their translations are and
much smoother merges. How about that?

Regards,
Cascardo.

```

## Jakub Narebski, 2009-06-29 16:33

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <m3prcnvw3v.fsf@localhost.localdomain>
URL: https://gitlist.dev/e/m3prcnvw3v.fsf%40localhost.localdomain
In-Reply-To: <7vfxdjc9b3.fsf@alter.siamese.dyndns.org>

```
Junio C Hamano <gitster@pobox.com> writes:

> Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> writes:

> > +Você também pode dar ao 'git-log' um "intervalo" de commits onde o
> > +primeiro não é necessariamente um ancestral do segundo; por exemplo, se
> > +as pontas dos ramos "stable" e "master" divergiram de um commit
> > +comum algum tempo atrás, então
> > +
> > +-------------------------------------
> > +$ git log stable..experimental
> > +-------------------------------------
 
> I am somewhat worried about the way how this translation will be
> maintained to keep in sync with the authoritative English version.
> Narita-san (CC'ed) who translated the document to Japanese did this:
> 
>     gittutorial(7)
>     ==============
>     // = gittutorial(7)
> 
>     NAME
>     ----
>     // == NAME
>     gittutorial - A tutorial introduction to git (for version 1.5.1 or newer)
>     // gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
> 
> and the idea seems that without // (comments in AsciiDoc markup) it
> matches the English copy, and after passing sed -ne 's|^// ||p' it yields
> Japanese version.  Narita-san's translation can be seen at
> 
>     http://github.com/yasuaki/git-manual-jp.git/Documentation
> 
> if anybody is interested.
> 
> With this format, merging upstream changes may not work as smoothly as it
> could be, but at least you can check which part of your translation is
> based on a stale copy with something like this arrangement.
> 
> I am wondering if it would be a good idea to extend Narita-san's scheme so
> that we can keep a single source, perhaps like:
> 
>     = gittutorial(7)
>     // ja = gittutorial(7)
>     // pt = gittutorial(7)
>     == NAME
>     // ja = NAME
>     // pt = NAME
>     gittutorial - A tutorial introduction to git (for version 1.5.1 or ...
>     // ja gittutorial - git チュートリアル (バージョン 1.5.1 以降用)
>     // pt gittutorial - Um tutorial de introdução ao git (para versão 1....
> 
> Then whenever somebody makes a change to the English version, he can and
> should also mark the corresponding translated versions "stale", so that it
> is easier to spot by translators.

[...]
> I however am not sure how practical it would be to force people to look at
> the *.txt version of document, only 1/n lines of which is now readable by
> him (if you are like a typical American who understands only English ;-).
> 
> Thoughts?

Somebody here (or on #git channel) pointed that there is po4a[1-4]
project using gettext to translate documentation.

[1] http://po4a.alioth.debian.org/
[2] https://launchpad.net/po4a
[3] http://freshmeat.net/projects/po4a
[4] http://www.ohloh.net/p/po4a
-- 
Jakub Narebski
Poland
ShadeHawk on #git

```

## Junio C Hamano, 2009-06-29 18:35

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <7vtz1yc2i3.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vtz1yc2i3.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20090629162738.GE4327@vespa.holoscopio.com>

```
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> writes:

> On Mon, Jun 29, 2009 at 09:08:00AM -0700, Junio C Hamano wrote:
>> Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> writes:
>> 
>> > Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
>> 
>> Thanks.
>> 
>> > +Você também pode dar ao 'git-log' um "intervalo" de commits onde o
>> > +primeiro não é necessariamente um ancestral do segundo; por exemplo, se
>> > +as pontas dos ramos "stable" e "master" divergiram de um commit
>> > +comum algum tempo atrás, então
>> > +
>> > +-------------------------------------
>> > +$ git log stable..experimental
>> > +-------------------------------------
>> > +
>> > +irá listas os commits feitos no ramo experimental mas não no ramo
>> > +stable, enquanto
>> > +
>> > +-------------------------------------
>> > +$ git log experimental..stable
>> > +-------------------------------------
>> > +
>> > +irá listar a lista de commits feitos no ramo stable mas não no ramo
>> > +experimental.
>> > +
>> 
>> I think you would want to update this part to match what you did in your
>> [PATCH 1/2 v2].
>
> Well remembered. Thanks.

As I do not speak the language, even though I can guess that a straight
replacement "s/experimental/master/g" would be enough for the above quoted
part (including the body text), I do not feel comfortable enough to update
these myself.  Please send in a replacement [PATCH 2/2 v2].

>> I however am not sure how practical it would be to force people to look at
>> the *.txt version of document, only 1/n lines of which is now readable by
>> him (if you are like a typical American who understands only English ;-).
>> 
>> Thoughts?
>
> I think that using something like po would be better. There are tools
> that can extract and update the template messages from many differente
> sources. Adapting them to produce a template file from gittutorial.txt
> would allow translators to verify how stale their translations are and
> much smoother merges. How about that?

After thinking about it a bit more, I think I would prefer something that
keeps translation sources separate from the original text.  That way, I
have a lot less chance of having to deal with merge/patch conflicts.

Your patch adds Documentation/pt/ hierarchy, but I noticed that the kernel
folks seem to use Documentation/{ja_JP,ko_KR,zh_CN}/.  I do not think it
would make much difference for Japanese language between ja vs ja_JP, but
for many languages used in different geographic areas, such an arrangement
would make a lot more sense.  As your patch identified itself as a
translation to "Brasilian Portuguese", I am imagining that it would be
sufficiently different to merit the distinction from Old-world Portuguese.
Perhaps your patch should be made to Documentation/pt_BR instead?

As to the choice of the tool, from a quick superficial glance, po4a could
be a reasonable choice, but I do not know how mature and/or widely used it
is, or if there are better alternatives.  http://po4a.alioth.debian.org/
says it does support AsciiDoc.

```

## André Goddard Rosa, 2009-07-30 03:26

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <b8bf37780907292026q61805aadhd2019eae77739c47@mail.gmail.com>
URL: https://gitlist.dev/e/b8bf37780907292026q61805aadhd2019eae77739c47%40mail.gmail.com
In-Reply-To: <7vtz1yc2i3.fsf@alter.siamese.dyndns.org>

```
>> I think that using something like po would be better. There are tools
>> that can extract and update the template messages from many differente
>> sources. Adapting them to produce a template file from gittutorial.txt
>> would allow translators to verify how stale their translations are and
>> much smoother merges. How about that?
>
> After thinking about it a bit more, I think I would prefer something that
> keeps translation sources separate from the original text.  That way, I
> have a lot less chance of having to deal with merge/patch conflicts.
>
> Your patch adds Documentation/pt/ hierarchy, but I noticed that the kernel
> folks seem to use Documentation/{ja_JP,ko_KR,zh_CN}/.  I do not think it
> would make much difference for Japanese language between ja vs ja_JP, but
> for many languages used in different geographic areas, such an arrangement
> would make a lot more sense.  As your patch identified itself as a
> translation to "Brasilian Portuguese", I am imagining that it would be
> sufficiently different to merit the distinction from Old-world Portuguese.
> Perhaps your patch should be made to Documentation/pt_BR instead?
>
> As to the choice of the tool, from a quick superficial glance, po4a could
> be a reasonable choice, but I do not know how mature and/or widely used it
> is, or if there are better alternatives.  http://po4a.alioth.debian.org/
> says it does support AsciiDoc.

git gui uses 'po' at http://repo.or.cz/w/git-gui/git-gui-i18n.git to
handle all translations, including Brazilian Portuguese.

In the meantime, I've made some translation improvements over Thadeu's
translation work, fixing some typos overall. I'll send it as a
separate patch.

@Thadeu: would you please double check it and perhaps add your Acked-by?

Thanks,
Andre

```

## Thadeu Lima de Souza Cascardo, 2009-07-30 15:44

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <20090730154446.GD1727@vespa.holoscopio.com>
URL: https://gitlist.dev/e/20090730154446.GD1727%40vespa.holoscopio.com
In-Reply-To: <b8bf37780907292026q61805aadhd2019eae77739c47@mail.gmail.com>

```
On Thu, Jul 30, 2009 at 12:26:14AM -0300, André Goddard Rosa wrote:
> git gui uses 'po' at http://repo.or.cz/w/git-gui/git-gui-i18n.git to
> handle all translations, including Brazilian Portuguese.
> 

But do they use it for Documentation? It doesn't seem so. po4a seems to
be a reasonable choice, which, in the end, means po too. But it would be
interesting to gather others experiences in keeping Documentation
translations updated, not only software strings.

> In the meantime, I've made some translation improvements over Thadeu's
> translation work, fixing some typos overall. I'll send it as a
> separate patch.
> 
> @Thadeu: would you please double check it and perhaps add your Acked-by?
> 

It seems OK, but for three fixes as I've sent before. Would you mind
re-sending them?

> Thanks,
> Andre

Regards,
Cascardo.

```

## André Goddard Rosa, 2009-07-30 17:42

Subject: Re: [PATCH] Translate the tutorial to Brazillian Portuguese.
Message-ID: <b8bf37780907301042p4ed4c3e9x85e76ab04ca12696@mail.gmail.com>
URL: https://gitlist.dev/e/b8bf37780907301042p4ed4c3e9x85e76ab04ca12696%40mail.gmail.com
In-Reply-To: <20090730154446.GD1727@vespa.holoscopio.com>

```
On 7/30/09, Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> wrote:
> On Thu, Jul 30, 2009 at 12:26:14AM -0300, André Goddard Rosa wrote:
>> git gui uses 'po' at http://repo.or.cz/w/git-gui/git-gui-i18n.git to
>> handle all translations, including Brazilian Portuguese.
>>
>
> But do they use it for Documentation? It doesn't seem so. po4a seems to
> be a reasonable choice, which, in the end, means po too. But it would be
> interesting to gather others experiences in keeping Documentation
> translations updated, not only software strings.

Sure, that's what po4a is meant for.

>> @Thadeu: would you please double check it and perhaps add your Acked-by?
>>
>
> It seems OK, but for three fixes as I've sent before. Would you mind
> re-sending them?

I've sent it including the contributions/fixes from you and Carlos.

Thanks,
Andre

```
