Git
Git é um sistema de controle de versão distribuído de código aberto, com ênfase em velocidade. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para gerenciar o desenvolvimento do kernel do Linux, e com o passar do tempo foi adaptado para poder ser aplicado por muitos outros projetos.
Cada diretório de trabalho do Git é um repositório com um histórico completo e habilidade total de acompanhamento das revisões, não dependente de acesso a uma rede ou a um servidor central.
O desenvolvimento do Git teve início após uma divergência entre o BitKeeper, um software proprietário, e os mantedores do Linux. Todo o controle de versões era feito por meio desta ferramenta proprietária, por meio de uma licença fornecida para projetos open source. No entanto, a empresa acusou a violação da licença após um dos mantedores do Linux enviar um Telnet para os servidores do BitKeeper e digitar "help", acusando-o de tentar efetuar uma engenharia reversa. Após isso, Linus Torvalds desejava uma ferramenta distribuída e gratuita para efetuar o controle de versão do projeto e nenhuma existente na época atendeu as suas expectativas. Assim, ele deu início ao desenvolvimento da ferramenta mais popular de controle de versão atualmente tendo em mente os seguintes princípios:
- Tomar o CVS como um exemplo do que não fazer; na dúvida, tomar exatamente a decisão contrária;
- Suportar um fluxo distribuído, como o BitKeeper;
- Várias firmes proteções contra corrompimento de arquivos, seja por acidente ou origem maldosa;
- Alta performance.
Em adição a estes princípios, o Git foi projetado para ter desempenho, segurança e flexibilidade. Características que veremos em detalhes a seguir.
Desempenho
As características de desempenho bruto do Git são muito fortes quando comparadas a muitas alternativas. Enviar novas mudanças, ramificar, combinar e comparar versões passadas são otimizados para o desempenho. Os algoritmos implementados dentro do Git aproveitam o conhecimento profundo sobre atributos comuns de árvores de arquivos de código fonte real, como eles geralmente são modificados ao longo do tempo e quais são os padrões de acesso.
Ao contrário de algum software de controle de versão, o Git não é enganado pelos nomes dos arquivos ao determinar o que o armazenamento e o histórico de versões da árvore de arquivos devem ser, em vez disso, o Git se concentra no próprio conteúdo do arquivo. Afinal, os arquivos do código fonte são freqüentemente renomeados, divididos e reorganizados. O formato do objeto dos arquivos do repositório do Git usa uma combinação de codificação delta (armazenamento de diferenças de conteúdo), compressão e armazena explicitamente conteúdo de diretório e objetos de metadados de versão.
A distribuição também permite benefícios de desempenho significativos.
Por exemplo, digamos que um desenvolvedor, Alice, faz alterações no código-fonte, adicionando um recurso para a próxima versão 2.0, então confirma essas alterações com mensagens descritivas. Ela então trabalha em um segundo recurso e compromete essas mudanças também. Naturalmente, estas são armazenadas como peças de trabalho separadas no histórico da versão. Alice então muda para o ramo da versão 1.3 do mesmo software para corrigir um erro que afeta apenas essa versão mais antiga. O objetivo deste objetivo é permitir que a equipe de Alice envie uma versão de correção de erros, versão 1.3.1, antes que a versão 2.0 esteja pronta. Alice pode então retornar ao ramo 2,0 para continuar trabalhando em novos recursos para 2.0 e tudo isso pode ocorrer sem acesso à rede e, portanto, é rápido e confiável. Ela poderia até fazê-lo em um avião. Quando ela está pronta para enviar todas as mudanças individualmente comprometidas no repositório remoto, Alice pode "empurrá-las" em um único comando.
Segurança
O Git foi projetado com a integridade do código-fonte gerenciado como uma prioridade máxima. O conteúdo dos arquivos, bem como as relações verdadeiras entre arquivos e diretórios, versões, tags e compromissos, todos esses objetos no repositório Git são protegidos com um algoritmo de hash criptográfico seguro chamado SHA1. Isso protege o código eo histórico de alterações contra mudanças acidentais e mal-intencionadas e garante que o histórico seja totalmente rastreável.
Com o Git, você pode ter certeza de que possui um histórico de conteúdo autêntico do seu código-fonte.
Alguns outros sistemas de controle de versão não têm proteções contra alterações secretas em uma data posterior. Isso pode ser uma vulnerabilidade séria de segurança da informação para qualquer organização que dependa do desenvolvimento de software.
Flexibilidade
Um dos principais objetivos de design da Git é a flexibilidade. O Git é flexível em vários aspectos: em suporte para vários tipos de fluxos de trabalho de desenvolvimento não-linear, em sua eficiência em projetos pequenos e grandes e em sua compatibilidade com muitos sistemas e protocolos existentes.
O Git foi projetado para suportar ramificações e marcação como cidadãos de primeira classe (ao contrário do SVN) e as operações que afetam os ramos e as tags (como a fusão ou a reversão) também são armazenadas como parte do histórico de mudanças. Nem todos os sistemas de controle de versão apresentam esse nível de rastreamento.
Conclusão
Git é a melhor escolha para a maioria das equipes de software hoje. Embora cada equipe seja diferente e deve fazer sua própria análise, aqui estão os principais motivos pelos quais o controle de versão com o Git é preferido em relação às alternativas: git é bom, é um padrão de fato, é um projeto open source de extrema qualidade.
Só faltou comentar o fato de quando ocorre algum erro no momento em que está enviando as alterações. Esta semana aconteceu comigo de no momento que estava fazendo o push, o computador de tela azul, e eu perdi todas as alterações do commit... Trágico, porém consegui reverter fazendo um novo clone e ir movendo, na mão, os arquivos alterados...
ResponderExcluir