Mac remoto para Xcode: compilación local, compilación remota ou compartir pantalla?
Un espazo de traballo montado e un Xcode remoto moven datos distintos. Decide onde viven a fonte, o índice e a compilación, e logo mide as viaxes de ida e volta.
Compartir un proxecto pola rede non traslada Xcode, porque a aplicación segue executándose no teu Mac e segue pedindo os datos do proxecto ao servidor. Executar Xcode no Mac remoto e ver a súa pantalla é outra disposición, na que a aplicación e os seus ficheiros permanecen xuntos e a ligazón só transporta a visualización e a túa entrada. Decidir cal das dúas queres, antes de configurar nada, resolve a maior parte da confusión posterior.
Tres disposicións cobren os casos habituais, e difiren en onde vive o espazo de traballo e que máquina compila. Anota a túa resposta para ambos os puntos antes de continuar.
Nomea a máquina que executa Xcode
Na primeira disposición todo é local: a copia de traballo, o índice e a compilación viven no teu Mac, e a rede só transporta tráfico de repositorio e de dependencias. Na segunda, o proxecto queda no Mac remoto con Xcode, así que a indexación e a compilación ocorren xunto aos ficheiros mentres a ligazón transporta contido de pantalla e pulsacións de teclas. Na terceira, a edición ocorre localmente e unha compilación execútase nun anfitrión remoto tras unha entrega explícita da fonte. A táboa nomea que move cada unha.
| 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 |
Le primeiro a columna central, porque decide onde aparecerán os fallos. Un fluxo de traballo cuxa fonte é remota falla cando a ligazón é lenta, mentres que un fluxo cun compilador remoto falla cando a entrega é ambigua. Só a terceira te fai responsable de ambas as dúas cousas.
Conta as viaxes de ida e volta, non os megabytes
Un editor e un indexador emiten moitas operacións de ficheiro pequenas, e cada unha convértese nunha viaxe de ida e volta cando o sistema de ficheiros é remoto. Iso fai que un espazo de traballo montado sexa sensible á latencia dun xeito no que unha soa copia grande non o é, polo que medir o tempo dunha transferencia de ficheiro non che di case nada sobre como se sente o fluxo de traballo. A visualización remota ten o perfil oposto: move un fluxo continuo e tolera mellor o rendemento que o atraso. Comparar as dúas cun só número produce unha resposta errónea e segura.
Ningunha das disposicións é a máis rápida por natureza. A elección correcta depende do traballo que realmente fas, polo que o seguinte paso é probar ese traballo e non unha referencia.
Fai explícita a entrega da fonte
Cando ambas as máquinas teñen unha copia de traballo, decide cal é a autoritativa e que revisión usou a compilación remota. Un commit é unha entrega máis clara que dúas ferramentas editando un só árbore de traballo montado, porque o commit ten identidade e o montaxe non. A saída xerada e os datos do índice tamén necesitan un dono, porque se reconstrúen a partir da fonte e non deberían viaxar coma se fosen fonte. Un espello bidireccional sen regras de conflito non é un fluxo de traballo, é unha carreira.
Compilar en remoto tamén require que o anfitrión remoto teña a cadea de ferramentas correcta e as credenciais para as dependencias privadas. Unha VPN que che permite chegar ao anfitrión non lle presta o acceso á túa conta, e non instala Xcode alí.
Comproba o camiño antes de comprometerte cun fluxo de traballo
Verifica o anfitrión remoto antes de deseñar ao seu redor, e despois mide a ligazón coas operacións que o fluxo de traballo realizará realmente. Os comandos seguintes comproban a cadea de ferramentas, o directorio de desenvolvedor activo e o custo de observación de ficheiros que fai dolorosos os espazos de traballo remotos. Executa o último pola ruta de rede e non localmente.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
Un anfitrión sen unha instalación completa de Xcode devolve un erro de xcodebuild, e iso é un problema da cadea de ferramentas, non da rede. O directorio de desenvolvedor mostra que Xcode usará a compilación, e unha ruta que só apunta ás ferramentas de liña de ordes significa que a aplicación non está instalada. Medir o tempo do comando de estado do repositorio a través do recurso compartido montado expón directamente o custo da viaxe de ida e volta, e comparalo cunha execución local dá o número que importa. Se esa fenda xa é desagradable, o fluxo co espazo montado será peor baixo un editor real.
Rexistra que disposición escolliches, que máquina posúe a fonte e como funciona a entrega. Esa nota converte a próxima incorporación ou o cambio de portátil nunha tarefa de configuración en lugar dunha investigación.