|
|
|
#!/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.
|
|
|
|
|
|
|
|
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.)
|
|
|
|
|
|
|
|
--- [../_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!"
|
|
|
|
|
|
|
|
--- [../_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>: Atira as alterações para uma biblioteca.
|
|
|
|
* 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. Mais alterações? Goto 1.
|
|
|
|
4. <tt>git svn rebase</tt> para verificar alterações <i>upstream</i>.
|
|
|
|
5. <tt>git commit</tt>.
|
|
|
|
6. Não satisfeito? Goto 1.
|
|
|
|
7. Tudo Ok? <tt>git svn dcommit</tt>
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|