Partajarea unui proiect prin rețea nu mută Xcode, deoarece aplicația continuă să ruleze pe Macul dumneavoastră și continuă să ceară serverului datele proiectului. Rularea Xcode pe Macul de la distanță și vizualizarea ecranului său este o altă amenajare, în care aplicația și fișierele ei rămân împreună, iar legătura transportă doar afișajul și intrarea dumneavoastră. Decizia privind varianta dorită, înainte de a configura ceva, rezolvă cea mai mare parte a confuziei ulterioare.

Trei amenajări acoperă cazurile obișnuite și diferă prin locul în care trăiește spațiul de lucru și prin mașina care compilează. Notați răspunsul la ambele puncte înainte de a continua.

Numiți mașina care rulează Xcode

În prima amenajare totul este local: copia de lucru, indexul și compilarea trăiesc toate pe Macul dumneavoastră, iar rețeaua transportă doar traficul depozitului și al dependențelor. În a doua, proiectul rămâne pe Macul de la distanță împreună cu Xcode, astfel încât indexarea și compilarea au loc lângă fișiere, iar legătura transportă conținutul ecranului și apăsările de taste. În a treia, editarea are loc local, iar o compilare rulează pe o gazdă de la distanță după un transfer explicit al sursei. Tabelul numește ce mută fiecare.

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

Citiți mai întâi coloana din mijloc, pentru că ea decide unde vor apărea eșecurile. Un flux de lucru a cărui sursă este la distanță eșuează când legătura este lentă, în timp ce un flux de lucru cu un compilator la distanță eșuează când transferul este ambiguu. Doar a treia vă face responsabil pentru ambele.

Numărați dus-întorsurile, nu megabaiții

Un editor și un indexator emit multe operații mici de fișiere, iar fiecare devine un dus-întors când sistemul de fișiere este la distanță. Asta face un spațiu de lucru montat sensibil la latență într-un mod în care o singură copie mare nu este, motiv pentru care cronometrarea unui transfer de fișiere nu spune aproape nimic despre cum se simte fluxul de lucru. Afișajul la distanță are profilul opus: mută un flux continuu și tolerează mai bine debitul decât întârzierea. Compararea celor două printr-un singur număr produce un răspuns greșit plin de încredere.

Nicio amenajare nu este cea mai rapidă prin natura ei. Alegerea corectă depinde de munca pe care o faceți de fapt, motiv pentru care pasul următor este să încercați acea muncă, nu un test de referință.

Faceți explicit transferul sursei

Când ambele mașini au o copie de lucru, decideți care este autoritară și ce revizie a folosit compilarea la distanță. Un commit este un transfer mai clar decât două instrumente care editează un singur arbore de lucru montat, deoarece commitul are o identitate, iar montarea nu. Rezultatele generate și datele indexului au nevoie și ele de un proprietar, pentru că sunt reconstruite din sursă și nu ar trebui să circule ca și cum ar fi sursă. O oglindă bidirecțională fără reguli de conflict nu este un flux de lucru, este o cursă.

Compilarea la distanță necesită de asemenea ca gazda de la distanță să aibă lanțul de instrumente potrivit și acreditările pentru dependențele private. Un VPN care vă permite să ajungeți la gazdă nu vă împrumută accesul la cont și nu instalează Xcode acolo.

Verificați calea înainte de a vă angaja într-un flux de lucru

Verificați gazda de la distanță înainte de a proiecta în jurul ei, apoi măsurați legătura cu operațiile pe care fluxul de lucru le va executa de fapt. Comenzile de mai jos verifică lanțul de instrumente, directorul de dezvoltator activ și costul de observare a fișierelor care face dureroase spațiile de lucru la distanță. Rulați ultima comandă prin calea de rețea, nu local.

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

O gazdă fără o instalare completă de Xcode returnează o eroare de la xcodebuild, ceea ce este o problemă de lanț de instrumente, nu de rețea. Directorul de dezvoltator arată ce Xcode va folosi compilarea, iar o cale care indică doar instrumentele de linie de comandă înseamnă că aplicația nu este instalată. Cronometrarea comenzii de stare a depozitului prin partajarea montată expune direct costul dus-întors, iar compararea cu o rulare locală dă numărul care contează. Dacă acel decalaj este deja neplăcut, fluxul de lucru cu spațiu de lucru montat va fi mai rău sub un editor real.

Notați ce amenajare ați ales, ce mașină deține sursa și cum funcționează transferul. Acea notă transformă următoarea integrare sau înlocuire de laptop într-o sarcină de configurare, nu într-o investigație.

Articole similare