At dele et projekt over netværket flytter ikke Xcode, fordi appen bliver ved med at køre på din Mac og bliver ved med at spørge serveren om projektdata. At køre Xcode på fjern-Macen og se dens skærm er en anden ordning, hvor appen og dens filer bliver sammen, og forbindelsen kun bærer skærmbilledet og dit input. At beslutte, hvilken af dem du vil have, inden du konfigurerer noget, løser det meste af den senere forvirring.

Tre ordninger dækker de sædvanlige tilfælde, og de adskiller sig i, hvor arbejdsområdet ligger, og hvilken maskine der kompilerer. Skriv dit svar på begge punkter ned, inden du fortsætter.

Navngiv maskinen, der kører Xcode

I den første ordning er alt lokalt: arbejdskopien, indekset og bygget ligger alle på din Mac, og netværket bærer kun trafik til repository og afhængigheder. I den anden bliver projektet på fjern-Macen sammen med Xcode, så indeksering og kompilering sker ved siden af filerne, mens forbindelsen bærer skærmindhold og tastetryk. I den tredje sker redigeringen lokalt, og et byg kører på en fjernvært efter en udtrykkelig kildeoverlevering. Tabellen navngiver, hvad hver af dem flytter.

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

Læs den midterste kolonne først, fordi den afgør, hvor fejl vil vise sig. En arbejdsgang, hvis kilde er fjern, fejler, når forbindelsen er langsom, mens en arbejdsgang med en fjernkompiler fejler, når overleveringen er tvetydig. Kun den tredje gør dig ansvarlig for begge.

Tæl rundturene, ikke megabyte

En editor og en indekserer udsteder mange små filoperationer, og hver af dem bliver en rundtur, når filsystemet er fjern. Det gør et monteret arbejdsområde følsomt over for latenstid på en måde, som en enkelt stor kopi ikke er, og derfor fortæller timing af en filoverførsel dig næsten intet om, hvordan arbejdsgangen føles. Fjernvisning har den modsatte profil: den flytter en kontinuerlig strøm og tåler gennemstrømning bedre, end den tåler forsinkelse. At sammenligne de to med ét tal giver et selvsikkert forkert svar.

Ingen af ordningerne er hurtigst af natur. Det rigtige valg afhænger af det arbejde, du faktisk udfører, og derfor er næste skridt at prøve det arbejde i stedet for et benchmark.

Gør kildeoverleveringen udtrykkelig

Når begge maskiner har en arbejdskopi, skal du beslutte, hvilken der er autoritativ, og hvilken revision fjernbygget brugte. Et commit er en klarere overlevering end to værktøjer, der redigerer et enkelt monteret arbejdstræ, fordi commitet har en identitet, og monteringen ikke har. Genereret output og indeksdata har også brug for en ejer, fordi de genopbygges fra kilden og ikke bør rejse, som om de var kilden. Et tovejsspejl uden konfliktregler er ikke en arbejdsgang, det er et kapløb.

At bygge eksternt kræver også at fjernværten har den rigtige værktøjskæde og legitimationsoplysningerne til private afhængigheder. En VPN, der lader dig nå værten, låner den ikke din kontoadgang, og den installerer ikke Xcode der.

Kontrollér stien, før du binder dig til en arbejdsgang

Kontrollér fjernværten, før du designer omkring den, og mål derefter forbindelsen med de operationer, som arbejdsgangen faktisk vil udføre. Kommandoerne nedenfor kontrollerer værktøjskæden, den aktive udviklermappe og omkostningen ved filobservation, som gør fjernarbejdsområder smertefulde. Kør den sidste over netværksstien i stedet for lokalt.

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

En vært uden en fuld Xcode-installation returnerer en fejl fra xcodebuild, og det er et værktøjskædeproblem snarere end et netværksproblem. Udviklermappen viser, hvilken Xcode bygget vil bruge, og en sti, der kun peger på kommandolinjeværktøjerne, betyder, at appen ikke er installeret. Timing af repository-statuskommandoen over den monterede deling blotlægger rundtursomkostningen direkte, og at sammenligne den med en lokal kørsel giver det tal, der betyder noget. Hvis det gab allerede er ubehageligt, vil arbejdsgangen med det monterede arbejdsområde være værre under en rigtig editor.

Notér, hvilken ordning du valgte, hvilken maskine der ejer kilden, og hvordan overleveringen fungerer. Den note gør den næste onboarding eller udskiftning af bærbar computer til en konfigurationsopgave i stedet for en undersøgelse.

Relaterede artikler