7 pontos por xguru 2022-01-21 | 3 comentários | Compartilhar no WhatsApp
  • Baseado na teoria de patches, mas ainda assim rápido e escalável

  • Commutation

→ Cada mudança pode ser aplicada independentemente da ordem, sem alterar o ID da versão

→ Workflow muito mais simples que git rebase ou hg transplant

→ Há um recurso de channels parecido com branch, mas ele não é algo tão importante como em outros sistemas. Por exemplo, uma feature branch no Pijul é apenas uma mudança

→ Manter o histórico limpo é a configuração padrão

  • Merge correctness

→ O Pijul garante alguns pontos durante o merge

→ O mais importante é que a ordem das linhas é sempre preservada. Diferente de merges 3-way, em que às vezes as linhas se misturam

→ Quando não é possível determinar a ordem (como em edições simultâneas), isso vira um conflito, o que o diferencia de sistemas que tratam isso como "Automatic" ou "No Conflict"

  • First-class conflicts

→ No Pijul, conflito não é modelado como "falha de merge", mas como um caso padrão

→ Em especial, um conflito entre duas mudanças é resolvido como uma única mudança

  • Partial Clones

→ Com Commutation, é possível clonar apenas um pequeno subconjunto do repositório. Na prática, também é possível aplicar somente as mudanças desse subconjunto

→ O trabalho com Partial Clone gera Changes que podem ser enviadas facilmente para repositórios grandes

3 comentários

 
maxn0d3 2022-12-05

Sendo bem sincero, o Git é o padrão no mercado e a gente usa, mas sempre foi bem incômodo... Já está na hora de ir migrando aos poucos para o Pijul, baseado em Rust

 
galadbran 2022-01-21

A maior diferença entre svn e git (tirando o fato de ser um repositório distribuído) é que o svn gerencia diffs, enquanto o git gerencia snapshots; então, como falam em teoria de patches, isso me faz pensar que talvez ele esteja mais para o lado de gerenciar diffs.

 
xguru 2022-01-21

A teoria de patches (Theory of Patches) pode ser vista no Darcs, que é um sistema de controle de versão distribuído.

Ao comparar Darcs e Git, costuma-se explicar assim.

Um conjunto de mudanças que você registra no Git é chamado de “commit”, enquanto no Darcs é chamado de “patch”.