Академический Документы
Профессиональный Документы
Культура Документы
1 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
www.devmedia.com.br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles
/viewcomp.asp?comp=28079
02/08/2016 14:13
2 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
3 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
Histrico
O Subversion um sistema de controle de verso centralizado que
consiste em um cliente (o SVN) e um servidor central, acessado por
meio de TCP/IP, geralmente via SSH ou HTTP/WebDAV. Desenvolvido
inicialmente pela CollabNet no final de 2000, e integrante do projeto
Apache desde 2010, o SVN foi adotado em muitos projetos da
comunidade Java devido sua integrao com as ferramentas de
desenvolvimento, alm de resolver problemas do seu antecessor o
CVS ao incluir o suporte transacional e melhorias de performance na
comunicao entre cliente e servidor.
O Git, por sua vez, foi desenvolvido inicialmente para atender s
demandas de controle de verso do kernel do sistema operacional
Linux. O desenvolvimento do Linux por sua prpria natureza
necessitava de um modelo distribudo de versionamento, onde
commits encontram-se espalhados em inmeras linhas de
desenvolvimento paralelas (branches) e devem passar por um
processo de aprovao. Essa necessidade levou ao desenvolvimento do
Git, pelo lder do projeto Linux, Linus Torvalds. Aps o lanamento da
primeira verso, em 2005, o Git passou a ser mantido por Junio
Hamano, engenheiro de software do Google.
02/08/2016 14:13
4 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
Conceitos
O modelo distribudo de controle de verso parte de conceitos que vo
alm do simples fato de eliminar um ponto nico de falha do modelo
centralizado, mas que esto relacionados ao aspecto colaborativo no
processo de desenvolvimento de software. O sistema distribudo possui
a flexibilidade para atender os mais diversos fluxos de trabalho
(workflows). A descentralizao permite a qualquer desenvolvedor
contribuir com um projeto sem a necessidade de permisso de escrita
02/08/2016 14:13
5 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
6 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
7 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
8 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
Comparativo
No SVN, um fluxo comum de trabalho consiste na transferncia
(checkout) de um determinado diretrio ou branch do servidor para
uma cpia local na rea de trabalho. Com isso, o desenvolvimento
feito somente com base nos arquivos encontrados nesta estrutura de
diretrios, que representa a rea de trabalho do desenvolvedor. No
Git, como o repositrio do desenvolvedor consiste em uma cpia
integral do repositrio remoto, particion-lo em subdiretrios no tem
o mesmo significado, j que o checkout ocorre aps o clone, portanto
todos os arquivos encontram-se presentes no sistema de arquivos do
cliente.
A rea de trabalho do desenvolvedor gerada aps o checkout de um
determinado branch. Aps o clone, o Git efetua o checkout de um
branch inicial, denominado master, semelhante ao trunk no
Subversion. Branches e merges tm papel fundamental no modelo
distribudo. Cada desenvolvedor trabalha em um branch local que, por
sua vez, associado a um branch remoto, ou tracking branch. Ao
sincronizar os repositrios atravs da operao de pull, se houve
qualquer alterao no branch remoto, um merge commit ser gerado
entre o branch local e o branch remoto. Caso contrrio, as alteraes
locais sero aplicadas no branch remoto sequencialmente (fastforward). No Git, os merges so representados por pontos de
convergncia no histrico de verses, ilustrado na primeira coluna da
Figura 3.
02/08/2016 14:13
9 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
10 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
11 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
O repositrio Git, assim como o SVN, pode ser acessado via HTTP. O
Git utiliza o Smart HTTP (ver Nota do DevMan 2) para esse
propsito, com as permisses de usurios configuradas em um
servidor Apache, por exemplo, via LDAP. Para acesso a leitura, o
comando git instaweb disponibiliza o repositrio para visualizao a
partir dos servidores lighthttpd (Linux) e webrick (Mac).
02/08/2016 14:13
12 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
13 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
02/08/2016 14:13
14 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
Concluses
Assim como toda mudana de paradigma, migrar de um sistema como
o SVN para o Git passa de uma fase inicial de negao (Por que
migrar se o sistema atual funciona bem?) para a fase de aceitao
(Como era possvel trabalhar sem o DVCS?) a partir do
aprimoramento no processo de desenvolvimento de software.
Os sistemas de controle de verso distribudos propem-se a resolver
problemas de controle de verso com uma abordagem inovadora, com
formas aprimoradas de se interagir e compartilhar cdigos-fonte. O
02/08/2016 14:13
15 de 15
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=28079
Links
Wiki oficial do Git.
[1] git.wiki.kernel.org
Case de migrao de SVN para Git.
[2] drdobbs.com/240009175
Livros
[3] Pro Git, Scott Chacon, Editora Apress, 2009
Livro disponvel no site oficial do Git.
02/08/2016 14:13