aboutsummaryrefslogtreecommitdiff
path: root/aulas/versionamento.rst
blob: 056c77993f0e4eeb16663b9bcdfd0014bd1fb8d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
4. Controle de versão e social coding
=====================================

4.1 - O que é? Pra que serve?
-----------------------------

Tópicos:

* Salvar o estado do código em revisões sequenciais.
* Integrar o trabalho do time.
* Acompanhar as mudanças no código (encontrar bugs, rollback, etc).
* Boa prática: versionando desde o dia 0.
* Ajuda, mas não resolve conflitos na edição de arquivos.

Imagens:

* https://git-scm.com/book/en/v2/book/01-introduction/images/local.png

4.2 - Quais sistemas existem?
-----------------------------

Tópicos:

* RCS (pré-histórico).
* CVS (roots, centralizado).
* Subversion (svn) (tradicional, centralizado).
* Mercurial (hg), Monotone (mtn), Bazaar (bzr), Darcs, Git (modernos, distribuídos).

Imagens:

* Ícones e screenshots do site de cada sistema.

4.2 - Centralizados versus distribuídos
---------------------------------------

Tópicos:

* Centralizado:

  * Repositório central para onde são enviadas mudanças.
  * Ou seja, existe uma cópia de referência.

* Distribuído:

  * Cada cópia de trabalho é um repositório completo e possui todo o histórico de revisões (também uma forma de backup).
  * Não requer um repositório central, porém um ponto de trocas central pode ser estipulado entre os desenvolvedores/as.

Imagens:

* Centralizado: http://phillihp.com/wp-content/uploads/2012/06/scm.png
* Distribuído: https://git-scm.com/book/en/v2/book/01-introduction/images/distributed.png

4.3 - Git: introdução
---------------------

4.3 - Características
~~~~~~~~~~~~~~~~~~~~~

* Desenvolvido inicialmente por Linus Torvalds.
* É o mais popular e difundido.
* Complexo e poderoso, porém pode ser usado de modo simples.
* Checagem de integridade nativa!

4.3 - Instalando
~~~~~~~~~~~~~~~~

* Focaremos em git pela linha de comando.
* Disponível em tudo que é tipo de sistema operacional.

4.3 - Configurando
~~~~~~~~~~~~~~~~~~

A única exigência é especificar um nome e email (de preferência funcional ;)
ara constar nas informações de revisão.

::

  git config --global user.name  "Seu Nome"
  git config --global user.email "seu@email"

4.3 - Repositórios
~~~~~~~~~~~~~~~~~~

* Repositórios: "pastas geridas pelo git".
* Iniciando um projeto no git:

::

    mkdir projeto
    cd projeto
    git init

* Pasta ".git" criada no repositório: não polui seu projeto.

4.3 - Trabalhando no projeto
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Três estágios de mudanças: cometidas (commited), marcadas para commit (staged) e modificadas (changed).

::

    atom README.md    # edite seu arquivo
    git status
    git add README.md # em seguida edite mais um pouco
    git status
    git diff
    git commit -m "Primeira revisão"
    git add README.md # mudanças recentes adicionadas ao estágio de lançamento
    git commit -m "Segunda revisão"
    git commit -a -m "Terceira revisão" # coloca todas as mudanças no estágio e comete

Imagens:

* https://git-scm.com/book/en/v2/book/01-introduction/images/areas.png

4.4 - Git: navegando no histórico
---------------------------------

4.4 - Log de revisões
~~~~~~~~~~~~~~~~~~~~~

* Árvore de histórico do repositório.
* Cada "revisão" do histórico representa um estado do repositório (snapshot).
* ID da revisão: hash SHA-1.

::

    git log
    git cola
    gitk

Imagens:

* https://git-cola.github.io/images/screenshot-main-linux.png
* https://static.lwn.net/images/ns/kernel/gitk.png

4.4 - Revertendo uma mudança
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Você pode fazer um novo commit na unha ou usar o ferramental do git.

::

    git commit --amend
    git revert
    git rebase

4.5 - Ramificações (branches e merges)
--------------------------------------

4.6 - Usando o git-flow
-----------------------

4.7 - Submódulos
----------------

* Um repositório git dentro de outro.
* Trava em revisões específicas.
* "Sistema de empacotamento" simples e integrado ao git.

4.8 - Social coding (gitlab, github, etc)
-----------------------------------------

4.9 - Github: criando e forkando um projeto
-------------------------------------------

4.10 - Github: fazendo um pull request
--------------------------------------

4.11 - Github: sistema de tickets
---------------------------------

4.12 - Atividades
-----------------

#. Instale o git.
#. Crie uma conta do `Github <https://github.com>`_ ou no `Gitlab <https://gitlab.com>`_.
#. Faça um pequeno site com o Skeleton.

Referências
-----------

* `cheatsheet do git-flow <https://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html>`_.
* `Skeleton: Responsive CSS Boilerplate <http://getskeleton.com/>`_
* `Versionamento Semântico 2.0.0 <http://semver.org/lang/pt-BR/>`_.
* `Curso Básico de Git - RBtech <https://www.youtube.com/watch?v=WVLhm1AMeYE&list=PLInBAd9OZCzzHBJjLFZzRl6DgUmOeG3H0>`_.
* `Instalando Git <https://git-scm.com/book/pt-br/v1/Primeiros-passos-Instalando-Git>`_.
* `git-cola: The highly caffeinated Git GUI <https://git-cola.github.io/>`_