Teammitglieder, die jj nie anfassen, müssen nicht wissen, dass es existiert

Teil 9 von 9.

Das war die Frage, die vor der Übernahme von all dem für echte Arbeit am meisten zählte: Was passiert, wenn ein PR-Review-Kommentar von jemandem kommt, der schlichtes git verwendet, oder wenn ich selbst aus Gewohnheit auf einen schlichten git-Befehl zurückfalle. Die Antwort stellte sich als der undramatischste Teil der ganzen Serie heraus, nichts Besonderes passiert, weil der Colocated-Modus bedeutet, dass jj dieselbe Git-Objektdatenbank liest und schreibt wie alle anderen. Ein mit git push gepushter Commit und ein mit jj git push gepushter Commit sind am anderen Ende dieselbe Art von Objekt.

Der Teil, den ich verifizieren wollte statt ihn auf gut Glauben hinzunehmen: Was, wenn jemand git fetch oder git pull direkt in meinem Colocated-Arbeitsverzeichnis ausführt, das eingebaute Git-Panel einer IDE, das das still tut, ist die realistische Version davon. jj importiert die aktuellen Git-seitigen Refs zu Beginn des nächsten jj-Befehls automatisch und exportiert seinen eigenen Zustand direkt danach automatisch zurück nach .git, sodass die beiden Sichten nie tatsächlich auseinanderdriften. Ich habe es getestet, indem ich mit schlichtem git fetch gefetcht und dann einfach jj log ausgeführt habe, die neuen Remote-Commits waren da, kein jj git fetch zuerst nötig.

Auf den gewöhnlichen git push eines Teammitglieds zu rebasieren ist identisch mit der Routine aus dem vorigen Beitrag: jj git fetch, jj rebase -d main. Wenn es in Konflikt gerät, hält jj den Konflikt im Commit fest und lässt mich weiterarbeiten, statt das ganze Repo in einem Mid-Rebase-Zustand einzufrieren, Konfliktmarker in der Datei sehen genau aus wie die von Git, sodass das Auflösen von Hand statt über jj resolve auch gut funktioniert.

Neun Beiträge später die Zusammenfassung, die ich jemand anderem geben würde, der das erwägt: Colocated jj ist ein persönliches Upgrade mit im Wesentlichen null Koordinationskosten. Niemand sonst im Team muss irgendetwas übernehmen, irgendeinen Workflow ändern oder es überhaupt erfahren, es sei denn, sie fragen, warum deine jj log-Ausgabe schöner aussieht als ihr git log --graph.