Você está na página 1de 30

GerenciandoRepositrios deCdigocomGIT

FbioOliv <fabio.olive@gmail.com> FilipeRosset <rosset.filipe@gmail.com>

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

Nvel,Objetivo,Requisitos

NvelIntermedirio Objetivo:compreenderofuncionamentodosistemade controledecontedosGIT Requisitos:

Teralgumaexperinciacomversionamentodecdigo Compreenderbemoquesoarquivosediretrios Saberoqueumafunohash(MD5,SHA)

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

Tpicos

Requisitosparaversionamentodecdigo Modelosdedesenvolvimento ObomevelhoCVS IntroduoaoGIT GerenciamentodeobjetosnoGIT Estadosdecontedoesuastransies Hashesparatudoesuasimplicaes Exemplosprticos

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

VersionamentodeCdigo

Armazenarasmudanasdocdigonotempo Registrarquemmudouoququando Navegarentrediferentesversesdocdigo Controlaroacessoaorepositriodecdigo Permitirdesenvolvimentoconcorrentedefeaturese facilitarsuaagregaoaocdigoprincipal Utilizadoporqualquerprojetonotrivial

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

ModelosdeDesenvolvimento

Centralizado

Timededesenvolvimentopequenoamdio Desenvolvedoresemcontatodireto Necessitacontroledequemdesenvolveoqu Repositriocentralnicodecdigo(CVS,SVN) Algunsrepositrioshierrquicos(ClearCase) omodelomaistradicional,tpicodesoftware proprietrioondeexistehierarquiadepessoal

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

ModelosdeDesenvolvimento

Distribudo

Timededesenvolvimentoenorme(desconhecido?) Desenvolvedoresemcontatofracoounulo Necessitamuitomaiscontroledecontedo

Senoexisterepositriocentral,comogarantirquetodos estotrabalhandonomesmocdigo? AbordagemoriginaldoLinus,erapssimoelento Sriesdeemailscompatchesusandoquilt


http://www.tchelinux.org/

PPLPPC(PatchPraL,PatchPraC)

TcheLinuxSantaCruzdoSul2009

OBomeVelhoCVS

Maisvelhodoquebom Umrepositriocentral,semmuitocontrolede consistnciaeproteocontraerros Cadaarquivoversionadoseparadamente

FormatoRCS,armazenadeltas,lento,noconfivel

Desenvolvedorespossuemapenascpiasde trabalho(checkouts)

Qualqueroperaoprecisaconectarnorepositrio
http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

OBomeVelhoCVS

Branchesprecisamsercriadosnorepositrio central

Impactatodootime,deixatudomaislento

Umsimplesdiffprecisaconsultarrepo Umsimpleslogprecisaconsultarrepo Apenasumdesenvolvedoracessaorepositrio decadavez UsadomuitoparaCVSannimo(broadcast)


http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

IntroduoaoGIT

CriadopeloLinusTorvaldspornoestar satisfeitocomnenhumoutrogerenciador Comogerenciaroprocessomassivamente distribudoeassncronodedesenvolvimentodo Linuxesuasmuitasvariaes? Comoaumentaraprodutividadesemengessar oprocessoesemcriargargalosem repositrioscentralizados?

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

IntroduoaoGIT

Requisitos:

Trabalharmuitorpidocommilharesdearquivos

Geralmentecadamudanaafetaapenasalguns Nuncacomparartodoorepositriopraveroquemudou NofimumbranchnoGITnocustaquasenada Branchespodemexistiremrepositriosseparados Quantomenoscentralizadomaiseficiente


http://www.tchelinux.org/

Permitirvriosbranchesdedesenvolvimento

Permitirvriosmodelosdedesenvolvimento

TcheLinuxSantaCruzdoSul2009

IntroduoaoGIT

Funcionacomoumsistemadearquivos endereadoporcontedo

Onomedoobjetonorepoderivadoseucontedo

Noversionaarquivos,masrastreiaamudana entrecontedosdearquivos(ediretrios)

Umarquivochamadoteste.ctinhaumcerto contedo,agoratemoutrocontedo Umobjetonuncamuda,scriadoelido


http://www.tchelinux.org/

Umobjetonoreporepresentaumcontedo

TcheLinuxSantaCruzdoSul2009

ObjetosnoGIT

Quandoumarquivoarmazenadono repositrio,seucontedopassadoporuma funoHASH OHASHresultantedonomeinternodo contedodentrodorepositrio Umdiretrioumcontedoquemapeia nomesdearquivoparaoshashesdeseus contedos

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

ObjetosnoGIT

OGITmantmohashdoobjetocujocontedo arepresentaoatualdodiretrioraizdo repositrio,eissopermiteaelefazer checkoutdosarquivoscomocontedoexato comoestavaantes AomudarumarquivoeregistrlonoGIT,o novocontedoviraumnovoobjetocomseu prpriohash,eoGITmantmainformaode quetalarquivofoimodificado


http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

EstadosdeContedo

Umobjetodiretrioquerepresenteodiretrio raizdorepositrionaverdaderepresentaUM ESTADOdesterepositrio

Ohashdodiretriocontmoshashesdosarquivos

Sealgumarquivoformodificado,ohashdo arquivomuda,portantoocontedododiretrio muda,eohashdodiretriomuda

Cadahashdediretrioraizrepresentaumpossvel estadodorepositrio
http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

TransiesentreContedos

Umcommitassociaumhashdervoreraiz cominformaescomoautor,pessoasque aprovarameumadescriodamudana Umcommitumobjeto,portantotemumhash Umcommitcontmohashdocommit ANTERIOReumhashdediretrioATUAL

Comoeraantes Comoestagora
http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

TransiesentreContedos

Umcommitmarcaatransioentreuma configuraodecontedoseoutra

Entreumestadodecontedoeoutro

Oscommits,ligadosunsaosoutros,formam umasequnciahistricademudanasno repositrio Branchessoapenasbifurcaesnessa sequncia


http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

Hashesparatudo!

QualquerobjetogerenciadopeloGITidentificado peloHASHdeseucontedo Arquivostmseucontedoarmazenadoemobjetos cujonomeohashdocontedo Semudarumbitnocontedo,mudaohasheaj outroobjeto Umobjetonuncamudanorepositrio,poisse mudasseteriaoutrohasheseriaoutroobjeto Operaosemlocks!


http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

Hashesparatudo!

Diretriosvirammapeamentosentrenomesde arquivosehashes Suarepresentaotambmhasheada Umsubdiretrioumnomemapeadoparaum hashqueidentificaoutroobjetodiretrio

100644blob46a98ae810aa46e950a08cbb1c23be3fd331c4c3teste

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

Hashesparatudo!

Semudarumarquivo,mudaseuhash,oquemudaa representaododiretrioecriaoutroobjetodiretrio comonovohash Commitsmarcamatransioentreumhashde diretrioparaoutrohashdediretrio Surpresa!Commitstambmsoarmazenadospelo hashdoseucontedo HEAD>hashdoestadoatualdarvore,ouseja,o commitmaisrecente

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

Hashesparatudo!

Ohashdoestadoatualdarvore,ouseja,docommit atual,representaTODAAHISTRIAdarvorede contedoataquelemomento SefossemudadoUMBITemalgumarquivono passado,seuhashseriadiferente,oquemudariao hashdodiretrio,quemudariaohashdocommit,que mudariaohashdetodososcommitsatoatual! impossvelfalsificaroucorromperorepositrio, desdequesesaibaohashatualdoHEAD

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

RepresentaoDidtica
Objetos

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

ArmazenandoumArquivo
Objetos C5
#include<foo.h> main(){ }

Index:teste.c>C5
TcheLinuxSantaCruzdoSul2009 http://www.tchelinux.org/

ArmazenandoumDiretrio
Objetos 42 teste.cC5 C5
#include<foo.h> main(){ }

Index:teste.c>C5
TcheLinuxSantaCruzdoSul2009 http://www.tchelinux.org/

ArmazenandoumCommit
Objetos 83 tree42 authorFabio Versoinicial! 42 teste.cC5 C5
#include<foo.h> main(){ }

HEAD>83
TcheLinuxSantaCruzdoSul2009

Index:
http://www.tchelinux.org/

ModificandooArquivo
Objetos 83 tree42 authorFabio Versoinicial! A2
#include<foo.h> main(){ foo(); }

42 teste.cC5

C5
#include<foo.h> main(){ }

HEAD>83
TcheLinuxSantaCruzdoSul2009

Index:teste.c>A2
http://www.tchelinux.org/

MudaoDiretrio
Objetos 83 tree42 authorFabio Versoinicial! 17 teste.cA2 A2
#include<foo.h> main(){ foo(); }

42 teste.cC5

C5
#include<foo.h> main(){ }

HEAD>83
TcheLinuxSantaCruzdoSul2009

Index:teste.c>A2
http://www.tchelinux.org/

CommitRegistraaMudana
Objetos 83 tree42 authorFabio Versoinicial! 17 teste.cA2 F7 parent83 tree17 authorFilipe Adicioneifoo() A2
#include<foo.h> main(){ foo(); }

42 teste.cC5

C5
#include<foo.h> main(){ }

HEAD>F7
TcheLinuxSantaCruzdoSul2009

Index:
http://www.tchelinux.org/

HistricodeCommits
Objetos 12 34 C3 85 A2 57

HEAD master

D4 7F

Featurebranch

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

ExemplosPrticos

Inicializarumrepositrio Criararquivosecommitar Criarbranchecheckout Alternarentrebranches Modificarembranchesenomaster Mergedobranchpromaster Visualizartudocomgitk


http://www.tchelinux.org/

TcheLinuxSantaCruzdoSul2009

Referncias

GITCommunitybook
http://book.gitscm.com/

Vdeo:LinusTorvaldsonGIT
http://www.youtube.com/watch?v=4XpnKHJAok8

Vdeo:GITaTalkbyRandalSchwartz
http://video.google.com/videoplay?docid=3999952944619245780

Manpageseexperimentao

TcheLinuxSantaCruzdoSul2009

http://www.tchelinux.org/

Você também pode gostar