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
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] |
|
|
|
|