Skip to content

codecon-dev/versus-git

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Desafio: Mini-Git do Zero

Repositório oficial do desafio Codecon: reconstrua o Git do zero — commit, histórico e diff funcionando do zero

Sobre o Desafio

Este repositório reúne os projetos desenvolvidos durante o desafio de reconstruir um sistema de controle de versão minimalista inspirado no Git.

O objetivo é implementar os três pilares fundamentais do Git:

  • Commit: salvar snapshots do estado atual dos arquivos
  • Histórico: listar os commits realizados em ordem cronológica
  • Diff: comparar dois commits e exibir o que mudou entre eles

Regras do Desafio

Limitações

  • ⏱️ 3 horas para desenvolvimento
  • 🛠️ Qualquer stack de desenvolvimento
  • 💡 Criatividade livre na implementação interna

Requisitos Técnicos

  • Comando de commit que persiste o estado dos arquivos
  • Listagem de histórico de commits
  • Diff funcional entre dois commits (comparação linha a linha)

Participe Você Também!

Acha que consegue implementar algo mais completo ou elegante? Adoraríamos ver sua versão!

Como Contribuir

  1. Fork este repositório
  2. Crie uma pasta com seu nome/username
  3. Desenvolva seu mini-Git
  4. Documente seu processo no README
  5. Abra um Pull Request

Template de Documentação

Seu README deve incluir:

  • Stack: Tecnologias utilizadas
  • Arquitetura: Como você estruturou o armazenamento dos snapshots?
  • Abordagem do Diff: Qual algoritmo ou estratégia de comparação você usou?
  • Resultado: Screenshots ou demo em terminal
  • Aprendizados: O que funcionou? O que você mudaria?

📁 Estrutura do Repositório

/
├── seu-nome-aqui/        # 👈 Sua contribuição!
│   ├── src/
│   │   └── ...
│   ├── package.json      # Se aplicável
│   └── README.md         # Descreva seu projeto aqui!
└── README.md

Conceitos-Chave

O que você precisa entender

  • Snapshots: O Git não armazena diffs — armazena o estado completo dos arquivos a cada commit
  • Hashes: Cada commit é identificado por um hash (SHA) do seu conteúdo
  • DAG: O histórico de commits forma um grafo acíclico dirigido — cada commit aponta para seu pai
  • Diff (Myers Algorithm): O algoritmo de Myers é a base do git diff — encontra a menor sequência de edições entre dois textos

Armadilhas Comuns

  • Confundir snapshot com delta — Git guarda estado, não diferença
  • Esquecer de persistir os dados entre execuções
  • Subestimar o diff — comparar arquivos linha a linha parece simples, mas borda cases aparecem rápido
  • Não tratar arquivos binários (pode ignorar no MVP)

Ideias para Expandir

Se quiser ir além do requisito mínimo:

  • 🌿 Branches: ponteiros nomeados para commits
  • 📌 HEAD: rastrear em qual estado o repositório se encontra
  • 🔀 Merge simples: juntar dois históricos sem conflito
  • 🏷️ Tags: marcar commits com nomes legíveis
  • 📦 Compressão: armazenar objetos de forma eficiente

🤝 Apoie a Codecon

Gostou do desafio? Apoie a criação de mais conteúdos como este!

Codecon PRO - Apenas R$ 20/mês

  • 🎫 Crachá especial na Codecon Summit
  • 💬 Acesso ao grupo secreto no WhatsApp/Discord
  • 🎬 Acompanhe os bastidores dos eventos
  • 📧 Newsletter semanal exclusiva
  • 🎨 Tema da Codecon para VSCode

Assine agora em codecon.dev/pro

📱 Siga a Codecon

📜 Licença

Este projeto está sob licença MIT. Sinta-se livre para explorar, aprender e compartilhar!


Feito com ⌨️ e muita raça pela comunidade Codecon

#Git #ControleDeVersão #Codecon #DesafioCodecon

About

Criem um git do zero

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors