My presentations, using Reveal.js (mostly in Portuguese).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

218 lines
5.0 KiB

#!/usr/bin/env pinpoint
# default style
[../_images/Sketch27014711.png]
[font=Sans 100px]
[fill]
[center]
[text-align=left]
# presentation starts here
--- [font=Serif 100px] [text-align=center]
<b>GIT + GIT-SVN</b>
---
<b>GIT Básico</b>
---
<b>O "index"</b>
O conceito do "index" é o que mais diferencia o GIT do SVN.
"index" são as alterações que serão mandadas, não os arquivos.
---
<tt>git add file.py</tt> - Coloca <i>as alterações</i> do arquivo no "index".
(Se o arquivo nunca esteve no "index", vai o arquivo inteiro).
---
<tt>git commit</tt> - Guarda as alterações como uma revisão.
(<tt>"git commit -a"</tt> adiciona TODAS alterações no "index" e gera um commit.)
<tt>git push</tt> - Envia as alterações para um servidor (normalmente, primeira
execução é <tt>git push origin master</tt>, onde <tt>origin</tt> é um alias
para o servidor).
---
Até aqui, SVN parece mais simples porque para mandar pro servidor é
um passo só (<tt>svn commit</tt>) vs 3 do GIT (<tt>git add</tt>, <tt>git commit</tt>,
<tt>git push</tt>).
---
<tt>git add -p file.py</tt>
* Adição parcial de conteúdo no index.
Para aqueles momentos de "fiz duas alterações, de dois issues diferentes".
--- [left] [shading-opacity=1.0]
<tt><span foreground="cyan">@@ -485,7 +485,7 @@</span> class GerenciadorForm(TestCase):
"""
curso = EntidadeCursoCurriculoGraduacao.objects.get(pk=1001)
<span foreground="red">- ano_periodo = AnoPeriodoGraduacao.objects.get(pk=1)</span>
<span foreground="green">+ ano_periodo = AnoPeriodoGraduacao.objects.get(pk=1001)</span>
# Populando o field com None.
dados = {'pessoa_fisica': u'5',
<b><span foreground="blue">Stage this hunk [y,n,q,a,d,/,e,?]? </span></b></tt>
(Ainda útil para aquela última verificada antes de comitar.)
---
<b><tt>git stash</tt></b>
* "Guarda" tudo que não foi commitado em separado.
* <tt>git stash pop</tt> reaplica as alterações guardadas.
---
<b><tt>git log</tt></b>
Igual ao <tt>svn log</tt>, mas não precisa de less.
<tt>git log --raw</tt>: Mostra inclusive os arquivos alterados.
<tt>git log -u</tt>: Mostra inclusive o que foi alterado.
---
<b><tt>git bisect</tt></b>
Tenta descobrir qual commit introduziu um bug.
* Mostra as alterações em um ponto da história dos logs.
* "O bug está aqui?"
* Se sim, retorna revisões.
* Se não, avança.
(Percorre as revisões como se fosse uma árvore binária.)
--- [../_images/grinch-smile.jpg]
Podem ser feitos <i>vários</i> commits sem que sejam enviados ao servidor.
"Meu branch pode estar quebrado totalmente e ninguém vai ver!"
---
<b>Parênteses</b>
As ferramentas de code review para GIT são muito melhores que
as dos outros SCVs.
--- [../_images/boycrying.jpg]
Mas eu uso SVN!
--- [../_images/baby-smile.jpg]
GIT-SVN to the rescue!
---
GIT-SVN cria e mantém um repositório GIT usando um servidor SVN.
Alguns comandos mudam.
---
<tt>git add</tt> continua igual (ainda com <tt>-p</tt>)
<tt>git commit</tt> continua igual.
Pelo menos isso...
---
<b>Criar o repositório GIT a partir do SVN:</b>
<tt>git svn clone http://blahblahblah.com/blah/blah/branch/blah</tt>
---
<b><tt>git svn clone https://ucsvirtual.ucs.br/sesi/svn/yoshi/branches/12266</tt></b>
<tt> A yoshi/google/alias/tests.py
A yoshi/google/alias/models.py
A yoshi/google/alias/urls.py
A yoshi/google/alias/forms.py
A yoshi/urls.py
A requirement.txt
W: +empty_dir: yoshi/autenticacao/esqueceu_senha/fixtures
W: +empty_dir: yoshi/autenticacao/login/templates/busca
W: +empty_dir: yoshi/core/busca/templates
W: +empty_dir: yoshi/core/geral/templates/search
W: +empty_dir: yoshi/templates/agenda/busca
r4531 = b3667a084e7d69080e0f1c7235b94dab9cb5a326 (refs/remotes/git-svn)
A yoshi/financeiro/cadastro_beneficio/__init__.py
A yoshi/financeiro/cadastro_beneficio/models.py
A yoshi/financeiro/__init__.py
r4532 = 65ce3a96d11c13d0be24836af3a276561885118c (refs/remotes/git-svn)
M yoshi/settings.py
M yoshi/modulos.py
</tt>
---
Pro-tip: Isso clona o repositório <i>e todos os commits</i>.
Portanto, não se alarme.
---
<b><tt>git svn rebase</tt></b> = <tt>svn up</tt>
Na verdade, irá recuperar tudo que foi feito desde a última revisão
e aplicar os commits locais, <i>nessa ordem</i>.
--- [top] [clone2.png]
Visão a partir do clone:
--- [top] [rebase2.png]
Visão depois do rebase:
---
<b><tt>git svn dcommit</tt></b> = <tt>svn commit</tt>
Faz o "upload" dos commits locais para o servidor.
---
Ok, qual a vantagem no final?
---
* Commits mais granulares.
* Branches locais.
* GIT Flow para um fluxo de trabalho conveniente.
* <tt>git stash</tt>
* Commit mesmo quando a rede está fora.
* Compatível com <i>qualquer</i> versão do SVN.
--- [../_images/tumblr_m3hn8kf49c1ropetlo1_400.jpg]
<b>Novo workflow</b>:
1. Alterar código.
2. <tt>git add</tt> alteração.
3. <tt>git svn rebase</tt> para verificar alterações <i>upstream</i>.
4. <tt>git commit</tt>.
5. Não satisfeito? Goto 1.
6. Tudo Ok? <tt>git svn dcommit</tt>
--- [../_images/thats-all-folks.jpg]