From 0aef8860a6e9fc69ee2c4d840771a17413af647f Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 7 Nov 2015 18:46:04 -0200 Subject: Updates Versionamento --- aulas/ambientes.rst | 8 ++- aulas/reinventando.rst | 14 ++++- aulas/versionamento.rst | 145 ++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 151 insertions(+), 16 deletions(-) diff --git a/aulas/ambientes.rst b/aulas/ambientes.rst index a31b472..828f5b2 100644 --- a/aulas/ambientes.rst +++ b/aulas/ambientes.rst @@ -2,8 +2,10 @@ =============================== - Neste curso será adotado o sistema operacional GNU/Linux como plataforma básica de trabalho. -- Porém, o conteúdo do curso pode ser facilmente adaptado para outros sistemas. -- Se você usa Windows ou MacOSX para desenvolvimento e quiser seguir normalmente o curso, recomendamos a criação de uma máquina virtual em GNU/Linux usando o Vagrant de acordo com a aula de `DevOps `_. +- Porém, o conteúdo do curso pode ser facilmente adaptado para outros sistemas, como é o caso do MacOSX. +- Se você usa Windows, recomendamos: + - A criação de uma máquina virtual em GNU/Linux usando o Vagrant de acordo com a aula de `DevOps `_. + - Ou o uso do Cygwin juntamente com seu editor de textos favorito. 2.1 - Ambiente básico e a guerra dos editores de texto ------------------------------------------------------ @@ -41,7 +43,7 @@ 2.4 - Scripts e templates ~~~~~~~~~~~~~~~~~~~~~~~~~ -- Scripts de produtividade. +- Scripts e atalhos de produtividade. - Templates de desenvolvimento. 2.5 - Atividades diff --git a/aulas/reinventando.rst b/aulas/reinventando.rst index 25f05fb..6303ba1 100644 --- a/aulas/reinventando.rst +++ b/aulas/reinventando.rst @@ -1,11 +1,19 @@ 7. Quando (não) reinventar a roda ================================= -6.1 - Antipatterns +6.1 - Patterns +-------------- + +* Filosofia UNIX: + * Pequenos softwares/bibliotecas. + * Que fazem uma coisa bem. + * E que podem ser facilmente combinados. + +6.2 - Antipatterns ------------------ -6.2 - Inferno de dependências +6.3 - Inferno de dependências ----------------------------- -6.3 - Documentação: lendo e escrevendo +6.4 - Documentação: lendo e escrevendo -------------------------------------- diff --git a/aulas/versionamento.rst b/aulas/versionamento.rst index ef1f7c2..0c50bc9 100644 --- a/aulas/versionamento.rst +++ b/aulas/versionamento.rst @@ -4,55 +4,180 @@ 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.5 - Git: ramificações (branches) ----------------------------------- +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 - Social coding (gitlab, github, etc) +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.8 - Github: criando e forkando um projeto +4.9 - Github: criando e forkando um projeto ------------------------------------------- -4.9 - Github: fazendo um pull request +4.10 - Github: fazendo um pull request ------------------------------------- -4.10 - Github: sistema de tickets +4.11 - Github: sistema de tickets --------------------------------- -4.11 - Atividades +4.12 - Atividades ----------------- #. Instale o git. -#. Crie uma conta do `Github `_ e uma no `Gitlab `_. +#. Crie uma conta do `Github `_ ou no `Gitlab `_. #. Faça um pequeno site com o Skeleton. Referências ----------- -- `Skeleton: Responsive CSS Boilerplate `_ -- `Versionamento Semântico 2.0.0 `_. +* `cheatsheet do git-flow `_. +* `Skeleton: Responsive CSS Boilerplate `_ +* `Versionamento Semântico 2.0.0 `_. +* `Curso Básico de Git - RBtech `_. +* `Instalando Git `_. +* `git-cola: The highly caffeinated Git GUI `_ -- cgit v1.2.3