Å dela eit prosjekt over nettverket flyttar ikkje Xcode, fordi appen held fram med å køyre på Macen din og held fram med å spørje tenaren om prosjektdata. Å køyre Xcode på den eksterne Macen og sjå skjermen hans er ei anna ordning, der appen og filene held saman og sambandet berre fraktar visinga og inndataa dine. Å avgjere kva av dei du vil ha, før du konfigurerer noko, løyser det meste av den seinare forvirringa.

Tre ordningar dekkjer dei vanlege tilfella, og dei skil seg i kvar arbeidsområdet bur og kva maskin som kompilerer. Skriv ned svaret ditt på begge punkta før du held fram.

Namngje maskinen som køyrer Xcode

I den første ordninga er alt lokalt: arbeidskopien, indeksen og bygginga bur på Macen din, og nettverket fraktar berre trafikk til depotet og avhengnadene. I den andre blir prosjektet på den eksterne Macen saman med Xcode, så indeksering og kompilering skjer ved sida av filene medan sambandet fraktar skjerminnhald og tastetrykk. I den tredje skjer redigeringa lokalt, og ei bygging blir køyrd på ein ekstern vert etter ei uttrykkeleg kjeldeoverlevering. Tabellen namngjev kva kvar av dei flyttar.

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

Les den midtre kolonnen først, fordi han avgjer kvar feil vil dukke opp. Ein arbeidsflyt der kjelda er ekstern feilar når sambandet er tregt, medan ein arbeidsflyt med ein ekstern kompilator feilar når overleveringa er tvitydig. Berre den tredje gjer deg ansvarleg for begge.

Tel rundturane, ikkje megabyta

Ein editor og ein indekserar sender ut mange små filoperasjonar, og kvar av dei blir ein rundtur når filsystemet er eksternt. Det gjer eit montert arbeidsområde kjenslevart for ventetid på ein måte som éin stor kopi ikkje er, og difor seier tidsmåling av ei filoverføring nesten ingenting om korleis arbeidsflyten kjennest. Ekstern vising har den motsette profilen: ho flyttar ein kontinuerleg straum og toler gjennomstrøyming betre enn forseinking. Å samanlikne dei to med eitt tal gir eit sjølvsikkert gale svar.

Ingen av ordningane er raskast av natur. Det rette valet heng av arbeidet du faktisk gjer, og difor er neste steg å prøve det arbeidet i staden for ein referanse.

Gjer kjeldeoverleveringa uttrykkeleg

Når begge maskinene har ein arbeidskopi, avgjer kva som er autoritativ og kva revisjon den eksterne bygginga brukte. Ein commit er ei klårare overlevering enn to verktøy som redigerer eitt montert arbeidstre, fordi commiten har ein identitet og monteringa ikkje. Generert utdata og indeksdata treng òg ein eigar, fordi dei blir bygde på nytt frå kjelda og ikkje bør reise som om dei var kjelda. Eit tovegs spegel utan konfliktreglar er ikkje ein arbeidsflyt, det er eit kappløp.

Å byggje eksternt krev òg at den eksterne verten har rett verktøykjede og påloggingsopplysningane for private avhengnader. Ein VPN som lèt deg nå verten, låner han ikkje kontotilgangen din, og han installerer ikkje Xcode der.

Kontroller stien før du forpliktar deg til ein arbeidsflyt

Stadfest den eksterne verten før du designar rundt han, og mål deretter sambandet med operasjonane arbeidsflyten faktisk vil utføre. Kommandoane nedanfor kontrollerer verktøykjeda, den aktive utviklarmappa og kostnaden ved filovervaking som gjer eksterne arbeidsområde smertefulle. Køyr den siste over nettverksstien i staden for lokalt.

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

Ein vert utan full Xcode-installasjon returnerer ein feil frå xcodebuild, og det er eit verktøykjdeproblem og ikkje eit nettverksproblem. Utviklarmappa viser kva Xcode bygginga vil bruke, og ein sti som berre peikar på kommandolinjeverktøya betyr at appen ikkje er installert. Tidsmåling av depotstatuskommandoen over den monterte delinga avdekkjer rundturkostnaden direkte, og samanlikning med ei lokal køyring gir talet som betyr noko. Viss det gapet allereie er ubehageleg, vil arbeidsflyten med montert arbeidsområde vere verre under ein ekte editor.

Noter kva ordning du valde, kva maskin som eig kjelda og korleis overleveringa fungerer. Den noten gjer neste opplæring eller laptopbyte til ei konfigurasjonsoppgåve i staden for ei gransking.

Relaterte artiklar