Com o avanço tecnológico, muitos sistemas embarcados atuais possuem poder de processamento maior que computadores pessoais de apenas 5 anos atrás. Isso significa que a cada dia podemos e desenvolvemos mais e mais software e/ou firmware. Para quem tem alguma experiência em projetos em sistemas embarcados, por diversas razões, nota-se que na maioria deles gasta-se mais tempo desenvolvendo firmware e software do que hardware. Diante desse cenário, no intuito de manter a qualidade do software, é imprescindível o uso de uma ferramenta para controle de versões.
Através de uma ferramenta de controle de versões, o programador tem um maior controle sobre o código fonte. Algumas vantagens e praticidades de um sistema de controle de versão:
- Guardar o histórico de alterações no código fonte;
- Marcar pontos importantes do projeto, como release de versões;
- Criar ramificações (branches) do código a fim de desenvolver/testar um novo algoritmo;
- Facilitar e/ou permitir o trabalho em paralelo em uma equipe;
- Retornar o código num estado anteriormente salvo, etc.
Existem dois principais tipos de sistemas de controle: sistemas de controle centralizado e sistemas de controle distribuído.
1) Sistemas de controle centralizado (VCS – Version Control System)
Basicamente esse tipo de sistema segue o padrão cliente-servidor. O repositório fica localizado no servidor e todo o código fonte e metadados para controle de versão (informações necessárias para salvar o status, commits, usuários, etc) são salvos nele. Todos clientes devem ler e escrever no servidor.
2) Sistemas de controle distribuído (DVCS – Distributed Version Control System)
Em sistemas distribuídos, todo o código fonte e metadados para o controle de versão são salvos localmente e por isso não existe um repositório único, mas tantos quanto o número de usuários que o compartilhem. Porém na prática, um repositório é escolhido para ser o “repositório oficial” para que todos possam contribuir num mesmo código.
No próximo post abordaremos um pouco mais sobre sistemas de controle centralizado, softwares que usam essa arquitetura, vantagens e desvantagens desse modelo.
E você caro leitor, tem usado em seus projetos algum tipo de sistema de controle de versões?




