quinta-feira, 17 de março de 2016

SCV: Boas Práticas #Parte 3#

Essa é a terceira e última parte das nossas dicas no uso dos SVCs, esperamos que façam bom proveito delas.

Boa práticas para sistemas de controle de versão distribuídos

Nunca force um comando

Fonte: http://cdn.meme.am/instances/500x/55168121.jpg

"Não use git push -- force, as pessoas odiarão você"
Tanto o Git quanto o Mercurial por vezes se recusam a realizar um comando, como um push para um repositório remoto quando ainda não foi feito um pull prévio com todas as mudanças. O Mercurial por exemplo indica esse tipo de problema através da seguinte mensagem ao usuário:

abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

O Mercurial sugere que seja feito um merge com todas as mudanças — a melhor maneira de fazer isso é através do comando: 
hg fetch (em vez de hg merge)
Em seguida pode-se tentar novamente o comando que gerou o erro, push. Logicamente, como pode-se ver na mensagem de erro gerada a partir do comando de push, é possível forçar com:
push -f ou--force
Entretanto tal artifício não deve nunca ser usado, apesar de realizar o comando desejado, muito provavelmente esconderá problemas que deverão ser tratados no futuro, gerando retrabalho e perda de tempo para o(s) desenvolvedor(es).

Como já foi mostrado em outro posts de dicas, não se pode usar 'update' antes de 'commit' e 'merge'. O resultado será uma mensagem de erro como a descrita abaixo:
abort: outstanding uncommitted changes
Todavia, caso seja realmente necessário ou da vontade do desenvolvedor incorporar as mudanças providas por outros componentes do grupo, mesmo que ainda não finalizadas ou prontas para serem comitadas, o uso de um update sem seguir essas dicas irá gerar retrabalho por parte do programador.

Caching de uma senha

Fonte: http://www.leapbeyond.com/ric/tsvnpd/reveal.png

O SVN (Subversion) faz um cache de sua senha automaticamente, de modo que somente é preciso informar a sua senha uma primeira vez. Abaixo estão duas maneiras de fazer um caching de senha no Mercurial, no intuito de não precisar digitar a senha pessoal a cada uso do sistema:
  1.   hg clone https://usuario:senha@jsr308-langtools.googlecode.com/hg/ jsr308-langtools
    
  2. No arquivo .hgrc global, adicione esta seção:
    # The below only works in Mercurial 1.3 and later
    [auth]
    
    googlecode.prefix = code.google.com
    googlecode.username = nome_usuario
    googlecode.password = senha
    googlecode.schemes = https
    
    dada.prefix = dada.cs.washington.edu/hgweb/
    dada.username = nome_usuario
    dada.password = 
    dada.schemes = https
    

 Notificação por Email

Esta dica é particularmente para o Mercurial. Uma funcionalidade muito legal dos sistemas de controle de versão é a notificação por e-mail, de modo que todos os que fazem parte de um projeto sejam avisados a cada commit ou push revelando as mudanças no servidor.

Para se ter tal funcionalidade no Mercurial, basta seguir as dicas postadas em : http://mercurial.selenic.com/wiki/NotifyExtension.

Isso é tudo por enquanto, esperamos ter ajudado com as dicas!
Nos vemos na próxima postagem.

Referências:
Version control concepts and best practices. Disponível em:
https://homes.cs.washington.edu/~mernst/advice/version-control.html. Acesso em <08/03/2016>.

Nenhum comentário:

Postar um comentário