Compartir un projecte per la xarxa no mou Xcode, perquè l'aplicació continua executant-se al vostre Mac i continua demanant dades del projecte al servidor. Executar Xcode al Mac remot i veure'n la pantalla és una disposició diferent, en què l'aplicació i els seus fitxers es queden junts i l'enllaç només transporta la visualització i la vostra entrada. Decidir quina de les dues voleu, abans de configurar res, resol bona part de la confusió posterior.

Tres disposicions cobreixen els casos habituals, i difereixen en on viu l'espai de treball i quina màquina compila. Apunteu la vostra resposta per a tots dos punts abans de continuar.

Anomeneu la màquina que executa Xcode

En la primera disposició tot és local: la còpia de treball, l'índex i la compilació viuen al vostre Mac, i la xarxa només transporta trànsit de repositori i de dependències. En la segona, el projecte es queda al Mac remot amb Xcode, de manera que la indexació i la compilació passen al costat dels fitxers mentre l'enllaç transporta contingut de pantalla i pulsacions de teclat. En la tercera, l'edició passa localment i una compilació s'executa en un amfitrió remot després d'un lliurament explícit del codi font. La taula anomena què mou cadascuna.

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

Llegiu primer la columna central, perquè decideix on apareixeran les fallades. Un flux de treball amb el codi font remot falla quan l'enllaç és lent, mentre que un flux amb un compilador remot falla quan el lliurament és ambigu. Només la tercera us fa responsable de les dues coses.

Compteu els viatges d'anada i tornada, no els megabytes

Un editor i un indexador emeten moltes operacions de fitxer petites, i cadascuna es converteix en un viatge d'anada i tornada quan el sistema de fitxers és remot. Això fa que un espai de treball muntat sigui sensible a la latència d'una manera que una sola còpia gran no ho és, i per això mesurar el temps d'una transferència de fitxer no us diu gairebé res sobre com se sent el flux de treball. La visualització remota té el perfil oposat: mou un flux continu i tolera millor l'amplada de banda que el retard. Comparar les dues amb un sol número produeix una resposta errònia i segura.

Cap de les dues disposicions no és la més ràpida per naturalesa. L'elecció correcta depèn de la feina que feu realment, i per això el següent pas és provar aquesta feina i no un punt de referència.

Feu explícit el lliurament del codi font

Quan les dues màquines tenen una còpia de treball, decidiu quina és l'autoritativa i quina revisió va fer servir la compilació remota. Un commit és un lliurament més clar que dues eines editant un sol arbre de treball muntat, perquè el commit té una identitat i el muntatge no. La sortida generada i les dades de l'índex també necessiten un propietari, perquè es reconstrueixen a partir del codi font i no haurien de viatjar com si fossin codi font. Un mirall bidireccional sense regles de conflicte no és un flux de treball, és una cursa.

Compilar en remot també requereix que l'amfitrió remot tingui la cadena d'eines correcta i les credencials per a les dependències privades. Una VPN que us permet arribar a l'amfitrió no li presta l'accés al vostre compte, i no hi instal·la Xcode.

Comproveu el camí abans de comprometre-us amb un flux de treball

Verifiqueu l'amfitrió remot abans de dissenyar-hi al voltant, i després mesureu l'enllaç amb les operacions que el flux de treball farà realment. Les ordres següents comproven la cadena d'eines, el directori de desenvolupador actiu i el cost d'observació de fitxers que fa dolorosos els espais de treball remots. Executeu l'última pel camí de xarxa i no localment.

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

Un amfitrió sense una instal·lació completa de Xcode retorna un error de xcodebuild, i això és un problema de la cadena d'eines, no de la xarxa. El directori de desenvolupador mostra quin Xcode farà servir la compilació, i un camí que només apunta a les eines de línia d'ordres vol dir que l'aplicació no està instal·lada. Mesurar el temps de l'ordre d'estat del repositori a través del recurs compartit muntat exposa directament el cost del viatge d'anada i tornada, i comparar-lo amb una execució local dóna el número que importa. Si aquesta diferència ja és desagradable, el flux de treball amb l'espai muntat serà pitjor sota un editor real.

Anoteu quina disposició heu triat, quina màquina posseeix el codi font i com funciona el lliurament. Aquesta nota converteix la propera incorporació o el canvi d'ordinador portàtil en una tasca de configuració en lloc d'una investigació.

Articles relacionats