Escolar Documentos
Profissional Documentos
Cultura Documentos
Versionamento de Cdigo
30-40 minutos
Atualizado em 20 Ago 2014 falmeida1988@gmail.com
Subversion (SVN)
Git
Mercurial
Perforce
Repositrio
O repositrio (tambm chamado de repo) o lugar onde o seu projeto, bem
como todo o histrico de modificaes do mesmo, fica guardado.
Note que este repositrio s poder ser acessado de dentro da sua mquina
atravs do protocolo file://, por exemplo:*
Exemplos:
svn checkout http://example.com:9834/trunk minha_copia
Este comando faz uma cpia do cdigo cujo repositrio est em http://svn.example.com:9834/trunk
para o diretrio atual, sob o nome minha_copia/.
Quando voc faz uma operao de checkout ou clone, o diretrio para onde os
arquivos do projeto foram copiados a sua working copy.
Nada do que voc faz na sua working copy publicado (para o seu repositrio
at que voc faa um commit), portanto modificaes, criao de arquivos e
remoo de arquivos na sua cpia local no afetam o seu repositrio.
Add
Um arquivo ou diretrio criado na sua working copy no versionado (tracked)
por default. Para que um VCS (nesse caso, o SVN) comece a versionar (isto ,
guardar o histrico de modificaes) de um arquivo, necessrio que se
execute o comando add:
(dentro de sua working copy)
revision N
o estado do repositrio aps o N-
simo commit
Exemplos
svn commit a.txt b.txt -m "nova verso"
Este comando atualiza o repositrio de origem (de onde voc fez checkout) com as
mudanas feitas nos arquivos a.txt e b.txt.
Update
Uma operao de update faz a sua working copy refletir o estado atual do
repositrio.
Se, por exemplo, modificaes foram feitas por outro desenvolvedor no seu
repositrio de origem desde a ltima vez que voc fez uma operao de checkout,
uma operao de update ir modificar a sua working copy de modo a ficar igual ao
estado atual do repositrio.
Exemplos:
svn update arquivo1.txt sua working copy agora est no estado
como estava aps o 40 commit
Exemplos:
svn revert arquivo1.txt
Casos de uso:
Voc deseja comear a implementar uma funcionalidade nova
(grande e que necessitar de vrios commits) mas quer que sua
verso principal continue estvel enquanto a funcionalidade nova no
fica pronta.
N.B.: Outras opes como theirs-full, mine-conflict e theirs-conflict tambm esto disponveis.
Melhores prticas
D commit frequentemente
quanto mais commits, mais lugares para onde voc pode fazer revert
mais fcil fazer merge se as duas verses de um arquivo no esto muito
diferentes entre si.
voc se fora a dividir o desenvolvimento em unidades pequenas e
autocontidas de tarefas.
Ajuda a contar a histria do projeto atravs dos commits.
comando push
Envia o seu repositrio (com todos os seus commits) para um
repositrio remoto, atualizando o mesmo (pode ser rejeitado).
comando pull
Tenta atualizar o seu repositrio local, incorporando modificaes
vindas de um repositrio remoto (pode haver conflitos).
XTRA: Migraes - versionamento
de bancos de dados
Dois projetos rodando a mesma verso do cdigo mas com bancos de
dados com estruturas diferentes (tabelas e atributos) vo exibir
comportamento diferente.
Hoje em dia (2014) este j um problema bem resolvido pela maioria dos
frameworks em existncia.