Oddaljeni Mac za Xcode: lokalna gradnja, oddaljena gradnja ali deljenje zaslona?
Pripravljen delovni prostor in oddaljeni Xcode premikata različne podatke. Odločite, kje živijo vir, indeks in gradnja, nato izmerite povratne poti.
Deljenje projekta po omrežju ne premakne Xcodea, ker aplikacija še naprej teče na vašem Macu in še naprej zahteva podatke projekta od strežnika. Zaganjanje Xcodea na oddaljenem Macu in gledanje njegovega zaslona je drugačna ureditev, pri kateri aplikacija in njene datoteke ostanejo skupaj, povezava pa prenaša le prikaz in vaš vnos. Odločitev, katero od tega želite, sprejeta pred kakršno koli nastavitvijo, odpravi večino poznejše zmede.
Tri ureditve pokrivajo običajne primere in se razlikujejo po tem, kje živi delovni prostor in kateri stroj prevaja. Preden nadaljujete, zapišite odgovor na obe točki.
Poimenujte stroj, ki poganja Xcode
V prvi ureditvi je vse lokalno: delovna kopija, indeks in gradnja živijo na vašem Macu, omrežje pa prenaša le promet repozitorija in odvisnosti. V drugi projekt ostane na oddaljenem Macu skupaj z Xcodeom, zato indeksiranje in prevajanje potekata ob datotekah, medtem ko povezava prenaša vsebino zaslona in pritiske tipk. V tretji urejanje poteka lokalno, gradnja pa se zažene na oddaljenem gostitelju po izrecni predaji vira. Tabela poimenuje, kaj vsaka od njih premakne.
| 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 |
Najprej preberite srednji stolpec, ker odloča, kje se bodo pojavile napake. Delovni tok z oddaljenim virom odpove, ko je povezava počasna, medtem ko delovni tok z oddaljenim prevajalnikom odpove, ko je predaja dvoumna. Samo tretja vas naredi odgovornega za oboje.
Štejte povratne poti, ne megabajtov
Urejevalnik in indekser izdata veliko majhnih datotečnih operacij in vsaka postane povratna pot, ko je datotečni sistem oddaljen. Zato je pripravljen delovni prostor občutljiv na zakasnitev tako, kot ena velika kopija ni, zato merjenje časa prenosa datoteke skoraj nič ne pove o tem, kako se delovni tok obnese v praksi. Oddaljeni prikaz ima nasproten profil: prenaša neprekinjen tok in bolje prenaša prepustnost kot zakasnitev. Primerjava obeh z eno številko da samozavesten napačen odgovor.
Nobena ureditev ni po naravi najhitrejša. Pravilna izbira je odvisna od dela, ki ga dejansko opravljate, zato je naslednji korak preizkusiti to delo, ne primerjalnega testa.
Predajo vira naredite izrecno
Ko imata oba stroja delovno kopijo, odločite, kateri je merodajen in katero revizijo je uporabila oddaljena gradnja. Commit je jasnejša predaja kot dve orodji, ki urejata eno pripravljeno delovno drevo, ker ima commit identiteto, priklop pa ne. Ustvarjeni izhod in podatki indeksa potrebujejo lastnika, ker se obnovijo iz vira in ne bi smeli potovati, kot da so vir. Dvosmerno zrcaljenje brez pravil za konflikte ni delovni tok, je tekma.
Gradnja na daljavo prav tako zahteva, da ima oddaljeni gostitelj pravo orodno verigo in poverilnice za zasebne odvisnosti. VPN, ki vam omogoča doseči gostitelja, mu ne posodi dostopa do vašega računa in tam ne namesti Xcodea.
Preverite pot, preden se zavežete k delovnemu toku
Preverite oddaljenega gostitelja, preden okoli njega zasnujete delo, nato izmerite povezavo z operacijami, ki jih bo delovni tok dejansko izvajal. Spodnji ukazi preverijo orodno verigo, aktivni imenik za razvijalce in strošek opazovanja datotek, ki oddaljene delovne prostore naredi boleče. Zadnjega zaženite prek omrežne poti, ne lokalno.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
Gostitelj brez celotne namestitve Xcodea vrne napako iz xcodebuild, kar je težava orodne verige, ne omrežja. Imenik za razvijalce pokaže, kateri Xcode bo uporabila gradnja, pot, ki kaže le na orodja ukazne vrstice, pa pomeni, da aplikacija ni nameščena. Merjenje časa ukaza stanja repozitorija prek pripravljene delitve neposredno razkrije strošek povratne poti, primerjava z lokalnim zagonom pa da številko, ki je pomembna. Če je ta razlika že neprijetna, bo delovni tok s pripravljenim delovnim prostorom pod pravim urejevalnikom slabši.
Zapišite, katero ureditev ste izbrali, kateri stroj ima vir in kako poteka predaja. Ta zapis spremeni naslednje uvajanje ali zamenjavo prenosnika v konfiguracijsko nalogo namesto preiskave.