Ekstern Mac for Xcode: lokal bygging, ekstern bygging eller skjermdeling?
Et montert arbeidsområde og en ekstern Xcode flytter ulike data. Bestem hvor kilden, indeksen og byggingen bor, og mål deretter rundturene.
Å dele et prosjekt over nettverket flytter ikke Xcode, fordi appen fortsetter å kjøre på Macen din og fortsetter å spørre serveren om prosjektdata. Å kjøre Xcode på den eksterne Macen og se skjermen dens er en annen ordning, der appen og filene blir sammen og forbindelsen bare bærer visningen og inndataene dine. Å bestemme hvilken av dem du vil ha, før du konfigurerer noe, løser det meste av den senere forvirringen.
Tre ordninger dekker de vanlige tilfellene, og de er forskjellige i hvor arbeidsområdet bor og hvilken maskin som kompilerer. Skriv ned svaret ditt på begge punktene før du fortsetter.
Navngi maskinen som kjører Xcode
I den første ordningen er alt lokalt: arbeidskopien, indeksen og byggingen bor på Macen din, og nettverket bærer bare trafikk til depotet og avhengighetene. I den andre blir prosjektet på den eksterne Macen sammen med Xcode, så indeksering og kompilering skjer ved siden av filene mens forbindelsen bærer skjerminnhold og tastetrykk. I den tredje skjer redigeringen lokalt, og en bygging kjøres på en ekstern vert etter en uttrykkelig kildeoverlevering. Tabellen navngir hva hver av dem flytter.
| Arrangement | Where the source lives | What crosses the link |
|---|---|---|
| Everything local | Local disk | Repository and dependency traffic |
| Remote Xcode, screen shared | Remote disk | Display frames and input events |
| Local edit, remote build | Both, with a handoff | Source transfer, then build output |
Les den midterste kolonnen først, fordi den avgjør hvor feil vil dukke opp. En arbeidsflyt hvis kilde er ekstern feiler når forbindelsen er treg, mens en arbeidsflyt med en ekstern kompilator feiler når overleveringen er tvetydig. Bare den tredje gjør deg ansvarlig for begge.
Tell rundturene, ikke megabytene
En editor og en indekserer sender ut mange små filoperasjoner, og hver av dem blir en rundtur når filsystemet er eksternt. Det gjør et montert arbeidsområde følsomt for ventetid på en måte som én stor kopi ikke er, og derfor sier tidsmåling av en filoverføring nesten ingenting om hvordan arbeidsflyten føles. Ekstern visning har den motsatte profilen: den flytter en kontinuerlig strøm og tåler gjennomstrømning bedre enn forsinkelse. Å sammenligne de to med ett tall gir et selvsikkert galt svar.
Ingen av ordningene er raskest av natur. Det riktige valget avhenger av arbeidet du faktisk gjør, og derfor er neste steg å prøve det arbeidet i stedet for en referanse.
Gjør kildeoverleveringen uttrykkelig
Når begge maskinene har en arbeidskopi, bestem hvilken som er autoritativ og hvilken revisjon den eksterne byggingen brukte. En commit er en klarere overlevering enn to verktøy som redigerer ett montert arbeidstre, fordi commiten har en identitet og monteringen ikke. Generert utdata og indeksdata trenger også en eier, fordi de bygges på nytt fra kilden og ikke bør reise som om de var kilden. Et toveisspeil uten konfliktregler er ikke en arbeidsflyt, det er et kappløp.
Å bygge eksternt krever også at den eksterne verten har riktig verktøykjede og påloggingsopplysningene for private avhengigheter. En VPN som lar deg nå verten låner den ikke kontotilgangen din, og den installerer ikke Xcode der.
Kontroller stien før du forplikter deg til en arbeidsflyt
Verifiser den eksterne verten før du designer rundt den, og mål deretter forbindelsen med operasjonene arbeidsflyten faktisk vil utføre. Kommandoene nedenfor kontrollerer verktøykjeden, den aktive utviklermappen og kostnaden ved filovervåking som gjør eksterne arbeidsområder smertefulle. Kjør den siste over nettverksstien i stedet for lokalt.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
En vert uten full Xcode-installasjon returnerer en feil fra xcodebuild, og det er et verktøykjedeproblem og ikke et nettverksproblem. Utviklermappen viser hvilken Xcode byggingen vil bruke, og en sti som bare peker på kommandolinjeverktøyene betyr at appen ikke er installert. Tidsmåling av depotstatuskommandoen over den monterte delingen avslører rundturkostnaden direkte, og sammenligning med en lokal kjøring gir tallet som betyr noe. Hvis det gapet allerede er ubehagelig, vil arbeidsflyten med montert arbeidsområde være verre under en ekte editor.
Noter hvilken ordning du valgte, hvilken maskin som eier kilden og hvordan overleveringen fungerer. Den noten gjør neste opplæring eller laptopbytte til en konfigurasjonsoppgave i stedet for en undersøkelse.