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.