Los compañeros que nunca tocan jj no necesitan saber que existe
Parte 9 de 9.
Esta era la pregunta que más importaba antes de adoptar nada de esto para trabajo de
verdad: qué pasa cuando un comentario de revisión de un PR viene de alguien que usa
git a secas, o cuando yo mismo recurro por costumbre a un comando git a secas. La
respuesta resultó ser la parte menos dramática de toda la serie: no pasa nada
especial, porque el modo colocado significa que jj está leyendo y escribiendo la
misma base de datos de objetos de Git que todos los demás. Un commit empujado con
git push y un commit empujado con jj git push son el mismo tipo de objeto al otro
lado.
La parte que sí quería verificar en lugar de aceptar por fe: qué pasa si alguien
ejecuta git fetch o git pull directamente dentro de mi directorio de trabajo
colocado; el panel de Git integrado de un IDE haciéndolo en silencio es la versión
realista de esto. jj importa automáticamente las referencias del lado de Git al
inicio del siguiente comando de jj, y exporta automáticamente su propio estado de
vuelta a .git justo después, así que las dos vistas nunca llegan a desincronizarse
de verdad. Lo probé haciendo fetch con git fetch a secas y luego simplemente
ejecutando jj log: los nuevos commits remotos estaban ahí, sin necesidad de un
jj git fetch primero.
Hacer rebase sobre el git push ordinario de un compañero es idéntico a la rutina del
artículo anterior: jj git fetch, jj rebase -d main. Si hay conflicto, jj registra
el conflicto en el commit y me deja seguir trabajando en lugar de congelar el repo
entero en un estado de rebase a medias; los marcadores de conflicto en el archivo se
ven exactamente como los de Git, así que resolver a mano en lugar de vía
jj resolve también funciona bien.
Nueve artículos después, el resumen que le daría a otra persona que se lo esté
planteando: jj colocado es una mejora personal con esencialmente cero coste de
coordinación. Nadie más en el equipo tiene que adoptar nada, cambiar ningún flujo de
trabajo, ni siquiera enterarse, salvo que pregunten por qué la salida de tu jj log
se ve mejor que su git log --graph.