Ein Projekt über das Netzwerk zu teilen verlagert Xcode nicht, weil die App auf deinem Mac weiterläuft und den Server weiter nach Projektdaten fragt. Xcode auf dem entfernten Mac auszuführen und seinen Bildschirm anzusehen, ist eine andere Anordnung, bei der die App und ihre Dateien zusammenbleiben und die Verbindung nur die Anzeige und deine Eingaben überträgt. Zu entscheiden, welche davon du willst, bevor du irgendetwas konfigurierst, erledigt den größten Teil der späteren Verwirrung.

Drei Anordnungen decken die üblichen Fälle ab, und sie unterscheiden sich darin, wo der Arbeitsbereich liegt und welche Maschine kompiliert. Schreib deine Antwort zu beiden Punkten auf, bevor du weitermachst.

Benenne die Maschine, die Xcode ausführt

Bei der ersten Anordnung ist alles lokal: Arbeitskopie, Index und Build liegen auf deinem Mac, und das Netzwerk überträgt nur Repository- und Abhängigkeitsverkehr. Bei der zweiten bleibt das Projekt mit Xcode auf dem entfernten Mac, sodass Indexierung und Kompilierung neben den Dateien stattfinden, während die Verbindung Bildschirminhalt und Tastendrücke überträgt. Bei der dritten geschieht das Bearbeiten lokal, und ein Build läuft nach einer ausdrücklichen Quellübergabe auf einem entfernten Host. Die Tabelle benennt, was jede von ihnen bewegt.

ArrangementWhere the source livesWhat crosses the link
Everything localLocal diskRepository and dependency traffic
Remote Xcode, screen sharedRemote diskDisplay frames and input events
Local edit, remote buildBoth, with a handoffSource transfer, then build output

Lies zuerst die mittlere Spalte, denn sie entscheidet, wo Fehler auftauchen. Ein Arbeitsablauf mit entfernter Quelle scheitert, wenn die Verbindung langsam ist, während ein Arbeitsablauf mit entferntem Compiler scheitert, wenn die Übergabe mehrdeutig ist. Nur der dritte macht dich für beides verantwortlich.

Zähle die Rundläufe, nicht die Megabyte

Ein Editor und ein Indexierer lösen viele kleine Dateioperationen aus, und jede wird zu einem Rundlauf, wenn das Dateisystem entfernt ist. Das macht einen eingebundenen Arbeitsbereich empfindlich gegenüber Latenz, wie es eine einzelne große Kopie nicht ist, weshalb das Messen einer Dateiübertragung fast nichts darüber sagt, wie sich der Arbeitsablauf anfühlt. Die entfernte Anzeige hat das umgekehrte Profil: Sie bewegt einen fortlaufenden Strom und verträgt Durchsatz besser als Verzögerung. Die beiden mit einer Zahl zu vergleichen liefert eine selbstsichere falsche Antwort.

Keine der Anordnungen ist von Natur aus die schnellste. Die richtige Wahl hängt von der Arbeit ab, die du tatsächlich machst, weshalb der nächste Schritt ist, diese Arbeit zu probieren statt einen Benchmark.

Mach die Quellübergabe ausdrücklich

Wenn beide Maschinen eine Arbeitskopie halten, entscheide, welche maßgeblich ist und welche Revision der entfernte Build verwendet hat. Ein Commit ist eine klarere Übergabe als zwei Werkzeuge, die einen eingebundenen Arbeitsbaum bearbeiten, weil der Commit eine Identität hat und die Einbindung nicht. Erzeugte Ausgaben und Indexdaten brauchen ebenfalls einen Eigentümer, weil sie aus der Quelle neu gebaut werden und nicht reisen sollten, als wären sie Quelle. Ein Zweiwegspiegel ohne Konfliktregeln ist kein Arbeitsablauf, sondern ein Wettlauf.

Entfernt zu bauen erfordert außerdem dass der entfernte Host die richtige Werkzeugkette hat und die Zugangsdaten für private Abhängigkeiten. Ein VPN, das dich den Host erreichen lässt, leiht ihm nicht deinen Kontozugang, und es installiert dort kein Xcode.

Prüfe den Pfad, bevor du dich auf einen Arbeitsablauf festlegst

Prüfe den entfernten Host, bevor du um ihn herum entwirfst, und miss dann die Verbindung mit den Operationen, die der Arbeitsablauf tatsächlich ausführen wird. Die Befehle unten prüfen die Werkzeugkette, das aktive Entwicklerverzeichnis und die Kosten der Dateibeobachtung, die entfernte Arbeitsbereiche schmerzhaft machen. Führe den letzten über den Netzwerkpfad aus und nicht lokal.

xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain

Ein Host ohne vollständige Xcode-Installation gibt einen Fehler von xcodebuild zurück, und das ist ein Werkzeugkettenproblem und kein Netzwerkproblem. Das Entwicklerverzeichnis zeigt, welches Xcode der Build verwenden wird, und ein Pfad, der nur auf die Kommandozeilenwerkzeuge zeigt, bedeutet, dass die App nicht installiert ist. Das Messen des Repository-Statusbefehls über die eingebundene Freigabe legt die Rundlaufkosten direkt offen, und der Vergleich mit einem lokalen Lauf liefert die Zahl, auf die es ankommt. Wenn diese Lücke schon unangenehm ist, wird der Arbeitsablauf mit eingebundenem Arbeitsbereich unter einem echten Editor schlimmer.

Halte fest, welche Anordnung du gewählt hast, welche Maschine die Quelle besitzt und wie die Übergabe funktioniert. Diese Notiz macht die nächste Einarbeitung oder den Laptopwechsel zu einer Konfigurationsaufgabe statt zu einer Untersuchung.

Ähnliche Artikel