Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions A-git-in-other-environments.asc
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
[[A-git-in-other-environments]]
[appendix]
== Git in Other Environments
== O Git em Outros Ambientes

If you read through the whole book, you've learned a lot about how to use Git at the command line.
You can work with local files, connect your repository to others over a network, and work effectively with others.
But the story doesn't end there; Git is usually used as part of a larger ecosystem, and the terminal isn't always the best way to work with it.
Now we'll take a look at some of the other kinds of environments where Git can be useful, and how other applications (including yours) work alongside Git.
Se você leu o livro inteiro, aprendeu muito sobre como usar o Git na linha de comando.
Você pode trabalhar com arquivos locais, conectar seu repositório a outros em uma rede e trabalhar eficientemente com os outros.
Mas a história não termina aí; O Git geralmente é usado como parte de um ecossistema maior, e o terminal nem sempre é a melhor maneira de trabalhar com ele.
Agora veremos alguns dos outros tipos de ambientes nos quais o Git pode ser útil e como outros aplicativos (incluindo o seu) funcionam em conjunto com o Git.

include::book/A-git-in-other-environments/sections/guis.asc[]

Expand All @@ -23,6 +23,6 @@ include::book/A-git-in-other-environments/sections/zsh.asc[]

include::book/A-git-in-other-environments/sections/powershell.asc[]

=== Summary
=== Resumo

You've learned how to harness Git's power from inside the tools that you use during your everyday work, and also how to access Git repositories from your own programs.
Você aprendeu a aproveitar o poder do Git usando as ferramentas que você usa durante o trabalho diário e também a acessar repositórios Git a partir dos seus próprios programas.
10 changes: 5 additions & 5 deletions B-embedding-git-in-your-applications.asc
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[[B-embedding-git-in-your-applications]]
[appendix]
== Embedding Git in your Applications
== Incorporando o Git nos seus Aplicativos

If your application is for developers, chances are good that it could benefit from integration with source control.
Even non-developer applications, such as document editors, could potentially benefit from version-control features, and Git's model works very well for many different scenarios.
Se o seu aplicativo é feito para desenvolvedores, as chances são altas de que ele poderia se beneficiar de alguma integração com o controle de versão de fonte.
Mesmo aplicativos que não sejam para desenvolvedores, tais como os editores de documentos, podem potencialmente se beneficiar de funções em controle de versão, e o modelo do Git funciona muito bem em relação a muitos cenários distintos.

If you need to integrate Git with your application, you have essentially two options: spawn a shell and call the `git` command-line program, or embed a Git library into your application.
Here we'll cover command-line integration and several of the most popular embeddable Git libraries.
Se você precisar de integrar o Git junto com seu aplicativo, você tem basicamente duas opções: executar um shell e chamar pelo programa do `git` a partir da sua linha de comandos, ou ainda, no caso incorporar uma biblioteca do Git dentro de seu próprio aplicativo.
Neste ponto abordaremos sobre integração com a linha de comandos e em diversas das bibliotecas incorporáveis para o Git que dispõem da maior popularidade.

include::book/B-embedding-git/sections/command-line.asc[]

Expand Down
530 changes: 265 additions & 265 deletions C-git-commands.asc

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions LICENSE.asc
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0 or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Esta obra está licenciada sob a Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.
Para ver uma cópia desta licença, visite https://creativecommons.org/licenses/by-nc-sa/3.0 ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
82 changes: 41 additions & 41 deletions book/01-introduction/sections/about-version-control.asc
Original file line number Diff line number Diff line change
@@ -1,61 +1,61 @@
=== About Version Control
=== Sobre Controle de Versão

(((version control)))
What is "`version control`", and why should you care?
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
O que é "`controle de versão`", e por que você deveria se importar?
O controle de versão é um sistema que registra as mudanças em um arquivo ou conjunto de arquivos ao longo do tempo, para que você possa recuperar versões específicas mais tarde.
Para os exemplos neste livro, você usará o código-fonte de software como os arquivos sendo controlados, embora na realidade você possa fazer isso com quase qualquer tipo de arquivo em um computador.

If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use.
It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.
Using a VCS also generally means that if you screw things up or lose files, you can easily recover.
In addition, you get all this for very little overhead.
Se você é um designer gráfico ou web e deseja manter cada versão de uma imagem ou layout (o que você certamente iria querer), usar um Sistema de Controle de Versão (VCS) é uma decisão muito sábia.
Ele permite que você reverta arquivos selecionados para um estado anterior, reverta o projeto inteiro para um estado anterior, compare as alterações ao longo do tempo, veja quem modificou por último algo que pode estar causando um problema, quem introduziu um problema e quando, e mais.
Usar um VCS também geralmente significa que se você estragar as coisas ou perder arquivos, pode se recuperar facilmente.
Além disso, você obtém tudo isso com muito pouco esforço adicional.

==== Local Version Control Systems
==== Sistemas de Controle de Versão Locais

(((version control,local)))
Many people's version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they're clever).
This approach is very common because it is so simple, but it is also incredibly error prone.
It is easy to forget which directory you're in and accidentally write to the wrong file or copy over files you don't mean to.
O método de controle de versão preferido de muitas pessoas é copiar os arquivos para outro diretório (talvez um diretório com carimbo de data/hora, se elas forem espertas).
Essa abordagem é muito comum porque é muito simples, mas também é incrivelmente sujeita a erros.
É fácil esquecer em qual diretório você está e acidentalmente escrever no arquivo errado ou sobrescrever arquivos que você não pretendia.

To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.
Para lidar com esse problema, os programadores desenvolveram, há muito tempo, VCSs locais que tinham um banco de dados simples que mantinha todas as alterações nos arquivos sob controle de revisão.

.Local version control diagram
image::images/local.png[Local version control diagram]
.Diagrama de controle de versão local
image::images/local.png[Diagrama de controle de versão local]

One of the most popular VCS tools was a system called RCS, which is still distributed with many computers today.
https://www.gnu.org/software/rcs/[RCS^] works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches.
Uma das ferramentas VCS mais populares foi um sistema chamado RCS, que ainda é distribuído com muitos computadores hoje.
O https://www.gnu.org/software/rcs/[RCS^] funciona mantendo conjuntos de patches (isto é, as diferenças entre arquivos) em um formato especial no disco; ele pode então recriar a aparência de qualquer arquivo em qualquer ponto no tempo, somando todos os patches.

==== Centralized Version Control Systems
==== Sistemas de Controle de Versão Centralizados

(((version control,centralized)))
The next major issue that people encounter is that they need to collaborate with developers on other systems.
To deal with this problem, Centralized Version Control Systems (CVCSs) were developed.
These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place.(((CVS)))(((Subversion)))(((Perforce)))
For many years, this has been the standard for version control.
O próximo grande problema que as pessoas encontram é que precisam colaborar com desenvolvedores em outros sistemas.
Para lidar com esse problema, os Sistemas de Controle de Versão Centralizados (CVCSs) foram desenvolvidos.
Esses sistemas (como CVS, Subversion e Perforce) possuem um único servidor que contém todos os arquivos versionados, e vários clientes que fazem o checkout dos arquivos desse local central.(((CVS)))(((Subversion)))(((Perforce)))
Por muitos anos, este tem sido o padrão para controle de versão.

.Centralized version control diagram
image::images/centralized.png[Centralized version control diagram]
.Diagrama de controle de versão centralizado
image::images/centralized.png[Diagrama de controle de versão centralizado]

This setup offers many advantages, especially over local VCSs.
For example, everyone knows to a certain degree what everyone else on the project is doing.
Administrators have fine-grained control over who can do what, and it's far easier to administer a CVCS than it is to deal with local databases on every client.
Essa configuração oferece muitas vantagens, especialmente sobre os VCSs locais.
Por exemplo, todo mundo sabe, até certo ponto, o que todos os outros no projeto estão fazendo.
Os administradores têm um controle refinado sobre quem pode fazer o quê, e é muito mais fácil administrar um CVCS do que lidar com bancos de dados locais em cada cliente.

However, this setup also has some serious downsides.
The most obvious is the single point of failure that the centralized server represents.
If that server goes down for an hour, then during that hour nobody can collaborate at all or save versioned changes to anything they're working on.
If the hard disk the central database is on becomes corrupted, and proper backups haven't been kept, you lose absolutely everything -- the entire history of the project except whatever single snapshots people happen to have on their local machines.
Local VCSs suffer from this same problem -- whenever you have the entire history of the project in a single place, you risk losing everything.
No entanto, essa configuração também tem algumas desvantagens sérias.
A mais óbvia é o ponto único de falha que o servidor centralizado representa.
Se esse servidor ficar inativo por uma hora, durante essa hora ninguém poderá colaborar de forma alguma ou salvar alterações versionadas em nada no qual estejam trabalhando.
Se o disco rígido onde o banco de dados central está for corrompido e não tiverem sido mantidos backups adequados, você perde absolutamente tudo -- o histórico inteiro do projeto, exceto quaisquer snapshots únicos que as pessoas tenham em suas máquinas locais.
Os VCSs locais sofrem do mesmo problema -- sempre que você tem o histórico inteiro do projeto em um único lugar, corre o risco de perder tudo.

==== Distributed Version Control Systems
==== Sistemas de Controle de Versão Distribuídos

(((version control,distributed)))
This is where Distributed Version Control Systems (DVCSs) step in.
In a DVCS (such as Git, Mercurial or Darcs), clients don't just check out the latest snapshot of the files; rather, they fully mirror the repository, including its full history.
Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it.
Every clone is really a full backup of all the data.
É aqui que os Sistemas de Controle de Versão Distribuídos (DVCSs) entram em cena.
Em um DVCS (como Git, Mercurial ou Darcs), os clientes não fazem apenas o checkout do snapshot mais recente dos arquivos; em vez disso, eles espelham totalmente o repositório, incluindo todo o seu histórico.
Assim, se qualquer servidor morrer, e esses sistemas estivessem colaborando através desse servidor, qualquer um dos repositórios dos clientes pode ser copiado de volta para o servidor para restaurá-lo.
Cada clone é realmente um backup completo de todos os dados.

.Distributed version control diagram
image::images/distributed.png[Distributed version control diagram]
.Diagrama de controle de versão distribuído
image::images/distributed.png[Diagrama de controle de versão distribuído]

Furthermore, many of these systems deal pretty well with having several remote repositories they can work with, so you can collaborate with different groups of people in different ways simultaneously within the same project.
This allows you to set up several types of workflows that aren't possible in centralized systems, such as hierarchical models.
Além disso, muitos desses sistemas lidam muito bem com a existência de vários repositórios remotos com os quais podem trabalhar, de modo que você pode colaborar com diferentes grupos de pessoas de diferentes maneiras, simultaneamente, dentro do mesmo projeto.
Isso permite que você configure vários tipos de fluxos de trabalho que não são possíveis em sistemas centralizados, como modelos hierárquicos.
18 changes: 9 additions & 9 deletions book/01-introduction/sections/command-line.asc
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
=== The Command Line
=== A Linha de Comando

There are a lot of different ways to use Git.
There are the original command-line tools, and there are many graphical user interfaces of varying capabilities.
For this book, we will be using Git on the command line.
For one, the command line is the only place you can run _all_ Git commands -- most of the GUIs implement only a partial subset of Git functionality for simplicity.
If you know how to run the command-line version, you can probably also figure out how to run the GUI version, while the opposite is not necessarily true.
Also, while your choice of graphical client is a matter of personal taste, _all_ users will have the command-line tools installed and available.
Existem muitas maneiras diferentes de usar o Git.
Existem as ferramentas de linha de comando originais, e existem muitas interfaces gráficas de usuário com capacidades variadas.
Para este livro, usaremos o Git na linha de comando.
Por um lado, a linha de comando é o único lugar onde você pode executar _todos_ os comandos do Git -- a maioria das GUIs implementa apenas um subconjunto parcial das funcionalidades do Git por simplicidade.
Se você sabe como executar a versão de linha de comando, provavelmente também conseguirá descobrir como executar a versão da GUI, enquanto o oposto não é necessariamente verdadeiro.
Além disso, enquanto a escolha do cliente gráfico é uma questão de gosto pessoal, _todos_ os usuários terão as ferramentas de linha de comando instaladas e disponíveis.

So we will expect you to know how to open Terminal in macOS or Command Prompt or PowerShell in Windows.
If you don't know what we're talking about here, you may need to stop and research that quickly so that you can follow the rest of the examples and descriptions in this book.
Portanto, esperamos que você saiba como abrir o Terminal no macOS ou o Prompt de Comando ou PowerShell no Windows.
Se você não sabe do que estamos falando aqui, pode ser necessário parar e pesquisar isso rapidamente para que você possa acompanhar o restante dos exemplos e descrições neste livro.
Loading
Loading