7 puntos por xguru 2022-01-21 | 3 comentarios | Compartir por WhatsApp
  • Basado en la teoría de parches, pero rápido y escalable

  • Commutation

→ Cada cambio puede aplicarse sin importar el orden, sin cambiar el id de versión

→ Un flujo de trabajo mucho más simple que git rebase o hg transplant

→ Tiene una función de channels similar a branch, pero no es algo tan importante como en otros sistemas. Por ejemplo, una feature branch en Pijul es simplemente un cambio

→ Mantener el historial limpio es la configuración predeterminada

  • Corrección de merges

→ Pijul garantiza varias cosas al hacer merge

→ Lo más importante es que el orden de las líneas siempre se conserva. Es distinto a los merges 3-way, donde a veces las líneas se mezclan

→ Cuando no se puede determinar el orden (como en el caso de edición simultánea), se produce un conflicto, a diferencia de sistemas donde eso se considera "Automatic" o "No Conflict"

  • Conflictos de primera clase

→ En Pijul, un conflicto no se modela como un "fallo de merge", sino como un caso estándar

→ En particular, un conflicto entre dos cambios se resuelve como un solo cambio

  • Clones parciales

→ Usando Commutation, es posible clonar solo un pequeño subconjunto del repositorio. De hecho, también es posible aplicar únicamente los cambios sobre ese subconjunto

→ El trabajo sobre Partial Clone genera Changes que pueden enviarse fácilmente a repositorios grandes

3 comentarios

 
maxn0d3 2022-12-05

Git, la verdad, aunque se usa porque es el estándar en el trabajo, siempre ha sido bastante incómodo... Ya es momento de irnos cambiando poco a poco a Pijul, que está basado en Rust

 
galadbran 2022-01-21

La mayor diferencia entre svn y git (dejando de lado que uno sea un repositorio distribuido) es que svn gestiona diff, mientras que git gestiona snapshots, así que al oír eso de teoría de parches me da la impresión de que probablemente va más por el lado de gestionar diff.

 
xguru 2022-01-21

La teoría de parches (Theory of Patches) puede verse en el sistema de control de versiones distribuido Darcs.

Al comparar Darcs y Git, se explica así.

A set of changes that you record in Git is called a “commit”, while in Darcs it is called a “patch”.