Só um comentário, tags são estáticas, você não pode modificar uma versão tag. Para isso você têm que criar uma branch aparti dessa tag.
Exemplo de repositório (usando subversion):
/tags
/V_1.0
/V_1.1
/V_1.1.1
/M_1.1.1.345
/M_2.0.0.3864
/branches
/V_1.1.1
/trunk
/shelves
/peleteiro
/fulano
/sicrano
/trunk é sempre a versão que está sendo produzida (major release, no exemplo seria a 2.0).
Em branches está, quando necessário, alguma versão que já foi lançada (cópia aparti do /tags) para bugfixes e/ou alguma evolutiva quando necessário. Quando essa versão for finalizada, ela recebera um novo número (no exemplo se houve só correção de bugs 1.1.2, se houve mudança de funcionalidade 1.2) e então é movida para tags.
O :arrow: shelves é o espaço que cada participante do projeto tem para seu uso, seja para experimentar alguma coisa, para testar alguma ideia… Dessa forma você inibe o uso de “versões locais” e oferece backup, versionamente e tudo que um scm oferece.
Eu recomendo o livro “:arrow: Pragmatic Version Control”.
Outras coisas legais em um SCM é o uso correto das tags de versão, (@version $Id$ no meu caso) e um sistema de alerta.
Se você usa MSN no trabalho pode configurar o seu SCM para mandar um alerta a cada commit, se não usa (como eu) e o seu SCM gera um RSS com as mudanças (no caso do Subversion, através do WebSVN) instale um programa na maquina de cada desenvolvedor que dar aqueles alerta tipo “Novo Email” só que baseado em RSS. Funciona bem.
Existem varios desses sistemas de alerta, mas um que está para sair e me parece beeeem legal é o :arrow: www.touchstonegadget.com