desenvolvimento organizado com vcs
TRANSCRIPT
![Page 1: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/1.jpg)
BOM DIA!
![Page 2: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/2.jpg)
meu nome:Alwin “Yogarine” Garside
![Page 3: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/3.jpg)
ALVENIR
![Page 4: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/4.jpg)
ALVES
![Page 5: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/5.jpg)
![Page 6: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/6.jpg)
ALWIN
![Page 7: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/7.jpg)
WhoAmI? Desenvolvedor PHP há 4 anos 3 anos de experiência com Subversion 1 ano de experiência com Bazaar SysAdmin/Developer na UEPB (2006-2008) Developer na Itline/CESED (2008-2009)
![Page 8: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/8.jpg)
O que vou falar tanto? O que é VCS? Porquê VCS? Centralizado vs Distribuído Comandos básicos de VCS Introdução a svn, bzr e git
![Page 9: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/9.jpg)
MONOTONE
VCSBZR
GIT
SVNCVS
MERCURIAL
GNU ARCH
SVK
Desenvolvimento organizadocom
![Page 10: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/10.jpg)
WTF = VCS!?
![Page 11: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/11.jpg)
![Page 12: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/12.jpg)
Visual C#(ufa...)
![Page 13: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/13.jpg)
VERSION CONTROL SYSTEM
![Page 14: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/14.jpg)
SISTEMA DE CONTROLE DE VERSÃO
![Page 15: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/15.jpg)
HUH?
![Page 16: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/16.jpg)
PROJETOS SEM VCS:
![Page 17: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/17.jpg)
Pasta por data?
![Page 18: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/18.jpg)
Pasta por versão?
![Page 19: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/19.jpg)
VCS AJUDA A... ...MANTER UM CHANGELOG
![Page 20: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/20.jpg)
CHANGELOG?
![Page 21: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/21.jpg)
CHANGELOG =LOG DE MUDANÇAS
![Page 22: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/22.jpg)
![Page 23: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/23.jpg)
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S
![Page 24: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/24.jpg)
DIFF'S?
![Page 25: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/25.jpg)
DIFF = DIFERENÇA
![Page 26: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/26.jpg)
DIFF UNIFICADA:
![Page 27: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/27.jpg)
DIFF LADO-AO-LADO:
![Page 28: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/28.jpg)
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES
![Page 29: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/29.jpg)
BRANCHES?
![Page 30: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/30.jpg)
BRANCH = GALHO
![Page 31: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/31.jpg)
GALHOS:
![Page 32: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/32.jpg)
PROJETO = ÁRVORE(TREE)
![Page 33: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/33.jpg)
TRONCO
(TRUNK)
![Page 34: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/34.jpg)
TREE => TRUNK => BRANCHES
![Page 35: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/35.jpg)
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
SERIES BRANCHES:
FEATURE BRANCHES:
PROJECT TREE:
![Page 36: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/36.jpg)
BRANCHES!
![Page 37: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/37.jpg)
...voltando, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES ...FAZER UM MERGE ENTRE 2 BRANCHES
![Page 38: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/38.jpg)
MERGE?
![Page 39: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/39.jpg)
MERGE = JUNÇÃO
![Page 40: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/40.jpg)
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
SERIES BRANCHES
FEATURE BRANCHES
![Page 41: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/41.jpg)
0.1 0.2 0.3
Feature A Feature B Feature C Feature D Feature E
TRUNK
MERGE
![Page 42: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/42.jpg)
...emfim, VCS AJUDA A... ...MANTER UM CHANGELOG ...VISUALIZAR E APLICAR DIFF'S ...TRABALHAR COM MULTIPLAS BRANCHES ...FAZER MERGES ENTRE BRANCHES ...MUITO, MUITO MAIS!
![Page 43: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/43.jpg)
CENTRALIZADOVS.
DISTRIBUÍDO
![Page 44: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/44.jpg)
VCS CENTRALIZADO REPOSITÓRIO CENTRALIZADO COMPLICA CRIAÇÃO DE “FEATURE
BRANCHES” COLABORADORES MANDAM PATCHES
(DIFF'S) PARA OS MANTENEDORES OS DESENVOLVEDORES TRABALHAM COM
UM WORKING COPY
![Page 45: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/45.jpg)
WORKING COPY?
![Page 46: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/46.jpg)
WORKING COPY =CÓPIA DE TRABALHO
![Page 47: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/47.jpg)
WORKING COPY
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÂO 123
PEER
![Page 48: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/48.jpg)
WORKING COPY!
![Page 49: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/49.jpg)
...anyway, VCS CENTRALIZADO: REPOSITÓRIO CENTRALIZADO COMPLICA CRIAÇÃO DE “FEATURE
BRANCHES” COLABORADORES MANDAM PATCHES
(DIFF'S) PARA OS MANTENEDORES OS DESENVOLVEDORES TRABALHAM COM
UM WORKING COPY
![Page 50: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/50.jpg)
VCS CENTRALIZADO
REPOSITÓRIOPEER
PEER
MANTENEDOR
PEER
PEER
SERVIDOR
![Page 51: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/51.jpg)
VCS DISTRIBUIDO: REPOSITÓRIO DISTRIBUÍDO FACILITA CRIAÇÃO DE BRANCHES COLABORADORES CRIAM BRANCHES MANTENEDORES FAZER MERGES COM
BRANCHES DE COLABORADORES CADA DESENVOLVEDOR TRABALHA COM
UM PRÓPRIO REPOSITÓRIO
![Page 52: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/52.jpg)
VCS DISTRIBUIDO
main 1.2feature-tal bugfix-bar
main 1.2main
servidor
1.2
feature-x bugfix-y
MANTENEDOR JOÃOJOSÉ
bugfixbar
![Page 53: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/53.jpg)
COMANDOS BÁSICOS DE VCS
![Page 54: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/54.jpg)
COMANDOS BÁSICOS DE VCS CHECKOUT
![Page 55: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/55.jpg)
CHECKOUT
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÃO 123
PEER
CHECKOUT
![Page 56: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/56.jpg)
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm)
![Page 57: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/57.jpg)
COMMIT
REPOSITÓRIO
WORKINGCOPY
SERVIDOR
REVISÃO 124
PEER
COMMIT
![Page 58: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/58.jpg)
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import
![Page 59: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/59.jpg)
IMPORT
REPOSITÓRIO
PROJETOSEM VCS
SERVIDOR
REVISÂO 1
PEER
![Page 60: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/60.jpg)
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import export
![Page 61: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/61.jpg)
EXPORT
REPOSITÓRIO
PASTASEM VCS
SERVIDOR
REVISÃO 123
PEER
![Page 62: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/62.jpg)
COMANDOS BÁSICOS DE VCS checkout (co) commit (cm) import export diff branch merge add mv, cp, mkdir, etc.
![Page 63: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/63.jpg)
INTRODUÇÃO A SVN, BZR e GIT
![Page 64: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/64.jpg)
INTRODUÇÃO A SVN, BZR e GIT Introdução ao uso das ferramentas da linha de
comando Assumindo que está usando Linux Para Windows existem ferramentas gráficas
![Page 65: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/65.jpg)
SVN
![Page 66: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/66.jpg)
SVN = Subversion
![Page 67: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/67.jpg)
Subversion Centralizado Mais usado hoje em dia Google Code, Sourceforge, etc. Ótima integração com Eclipse, Zend Studio,
Netbeans, etc.
![Page 68: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/68.jpg)
Subversion Repositório num diretório público, pode ser
hospedado pelo http ou protocolo proprietário Subdiretório .svn em cada diretório contém
metadata
![Page 69: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/69.jpg)
Subversion Ferramentas de linha de comando:
svn svnadmin
![Page 70: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/70.jpg)
Subversion Criando um novo repositório:
# svnadmin create /var/svn/meu_repo
![Page 71: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/71.jpg)
Subversion Importando um novo projeto no repositório:
$ cd meuprojeto $ svn import /var/svn/meu_repo/trunk
![Page 72: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/72.jpg)
Subversion Fazendo um checkout do repositório
$ svn checkout /var/svn/meu_repo/trunk meuprojeto
![Page 73: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/73.jpg)
Subversion Dando commit
$ cd meuprojeto # svn commit -m “Corrigiu bug #x”
![Page 74: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/74.jpg)
Subversion Criando um branch
# svn mkdir /var/svn/meu_repo/branches # svn cp /var/svn/meu_repo/trunk
/var/svn/meu_repo/branches/meu_branch
![Page 75: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/75.jpg)
Subversion Fazendo merge com outro branch:
$ cd meu_projeto $ svn merge /var/svn/meu_repo/branches@2
/var/svn/meu_repo/branches@3
![Page 76: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/76.jpg)
BZR
![Page 77: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/77.jpg)
BZR = Bazaar
![Page 78: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/78.jpg)
Bazaar Feito para poder ser usado de forma distribuída
ou centralizada Desenvolvida pela Canonical Hospedagem no https://launchpad.net Foco em facilidade de uso
![Page 79: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/79.jpg)
Bazaar Metadata fica na pasta .bzr Metadata apenas na pasta principal Uma pasta pode ser working copy e branch ao
mesmo tempo
![Page 80: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/80.jpg)
Bazaar Criar branch para um novo projeto:
$ cd meuprojeto $ bzr init
Adicionar arquivos no working copy: $ bzr add $ bzr commit -m “Initial import”
![Page 81: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/81.jpg)
Bazaar Criar branch do seu projeto:
$ bzr branch meuprojeto meuprojeto-foo Depois, para sincronizar o branch filho:
$ cd meuprojeto-foo $ bzr pull
Empurrando as mudanças para branch pai: $ bzr commit $ bzr push
![Page 82: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/82.jpg)
GIT
![Page 83: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/83.jpg)
GIT Distribuído Criado pelo Linus Torvalds para ser usado no
desenvolvimento do kernel Linux Otimizada para desempenho
![Page 84: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/84.jpg)
GIT Initializar um branch:
$ cd meuprojeto $ git init
Adicionar arquivos no working copy $ git add $ git commit -m “Initial import”
![Page 85: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/85.jpg)
PERGUNTAS?
![Page 86: Desenvolvimento organizado com VCS](https://reader036.vdocuments.mx/reader036/viewer/2022062412/587ef6481a28ab35528b552d/html5/thumbnails/86.jpg)
Mais informações: Sites
http://subversion.tigris.org http://svnbook.red-bean.com http://bazaar-vcs.org http://git-scm.com
Entre em contato comigo: [email protected] (e-mail / Google Talk) [email protected] (Windows Live Messenger) http://www.yogarine.net http://twitter.com/yogarine