Apres git geinfo2012

Post on 17-May-2015

202 views 0 download

Transcript of Apres git geinfo2012

Helbert dos Santos, Ewout ter Haar

Grupo Apoio Técnico-Pedagógico – USPCEPA - IFUSPhttp://atp.usp.br

08/10/2012

Customização, Deployment e Manutenção de Código usando Git

Aplicação aos Moodles da USP

Grupo ATP: Apoio técnico-pedagógico a Ambientes de Aprendizagem

→ Uma proliferação de Moodles

Contexto

• Múltiplas instâncias Moodle (Projetos)

• RedeFor, Licenciatura em Ciências, EVC, Moodle do

Stoa, Moodle de Extensão, etc. etc.

• 270 mil logins/mês

• mais de 35 mil alunos

• Customização por projeto

• temas, plugins, relatórios

• Ambientes requerem alta disponibilidade

Problema

Como manter customizações + múltiplas instâncias?

– Acompanhar as atualizações “upstream” (melhorias e segurança)

– Desenvolvimento documentado, versionado e rastreável

– Desenvolvimento distribuído (incorporar contribuições “externas”)

Nossa solução

• Software de controle de revisões de código distribuído (DVCS, distributed version control system) Ex. Git, mercurial

– Atende aos requisitos– “Deployment” fácil / – ágil / seguro

Conceitos sobre “Controle de Versões”

[ProGIT]

• Registra alterações de arquivos

1. Versionamento local

Conceitos sobre “Controle de Versões”

[ProGIT]

• Equipe de desenvolvedores

• É preciso introduzir o

conceito de “merge”

(mesclar texto)

2. Versionamento remoto e central (cvs, subversion)

Conceitos sobre “Controle de Versões”

[ProGIT]

fluxo de trabalho flexível

Mais fácil incorporar contribuições

“externas”

3. Versionamento distribuído (git, mercurial)

repositório central: Ex. github, git.atp.usp.br

(um dos) repo(s) de desenvolvimento

$git pull$git merge...hack, hack$git commit$git push

repo de produção (deploy)

$git pull

Workflow GIT: “Deploy do Projeto X”

Workflow GIT: “Deploy do Projeto X”

Workflow GIT: “Deploy do Projeto X”

Workflow GIT: “Deploy do Projeto X”

Workflow GIT: “Replicar código genérico”

Temos N instâncias de um determinado software, cada uma com algumas customizações. Como atualizar as N instâncias com código comum a todas?

Workflow GIT: “Replicar código Moodle genérico”

Workflow GIT: “Replicar código genérico”

Workflow GIT: “Replicar código Moodle genérico”

Workflow GIT: “Replicar código genérico”

Workflow GIT: “Replicar código genérico”

Workflow GIT: “Atualização Moodle upstream”

Incorporar atualizações (de segurança e melhorias) sem perder as suas customizações

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Workflow GIT: “Atualização Moodle”

Conclusão

• “Deployment” fácil / ágil / seguro

• Facilidade para manter múltiplas instâncias Moodle

• Histórico das revisões de código (documentação)

• Colaboração de desenvolvedores externos

Referências GIT

• [Progit] http://progit.org/book/

• [Gitref] http://gitref.org

Contato ATP

suporte@atp.usp.br / http://atp.usp.br