Аддалены Mac для Xcode: лакальная зборка, аддаленая зборка ці сумесны экран?
Прымантаваная працоўная прастора і аддалены Xcode перамяшчаюць розныя даныя. Вызначце, дзе жывуць зыходнік, індэкс і зборка, затым вымерайце абароты.
Абагульванне праекта па сетцы не пераносіць Xcode, бо праграма працягвае працаваць на вашым Mac і працягвае запытваць даныя праекта ў сервера. Запуск Xcode на аддаленым Mac і прагляд яго экрана — гэта іншая схема, дзе праграма і яе файлы застаюцца разам, а канал перадае толькі выяву і вашы ўводзіны. Рашэнне, якую з іх вы хочаце, перш чым нешта наладжваць, здымае большую частку далейшай блытаніны.
Тры схемы ахопліваюць звычайныя выпадкі, і яны розняцца тым, дзе жыве працоўная прастора і якая машына кампілюе. Запішыце свой адказ па абодвух пунктах, перш чым працягваць.
Назавіце машыну, якая запускае Xcode
У першай схеме ўсё лакальна: працоўная копія, індэкс і зборка жывуць на вашым Mac, а сетка перадае толькі трафік рэпазіторыя і залежнасцей. У другой праект застаецца на аддаленым Mac разам з Xcode, таму індэксацыя і кампіляцыя адбываюцца побач з файламі, а канал перадае змесціва экрана і націскі клавіш. У трэцяй рэдагаванне адбываецца лакальна, а зборка выконваецца на аддаленым хосце пасля яўнай перадачы зыходніка. Табліца называе, што перамяшчае кожная з іх.
| 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 |
Спачатку прачытайце сярэдні слупок, бо ён вызначае, дзе з'явяцца збоі. Працэс, зыходнік якога аддалены, збаіць, калі канал павольны, а працэс з аддаленым кампілятарам збаіць, калі перадача неадназначная. Толькі трэцяя робіць вас адказным за абодва.
Лічыце абароты, а не мегабайты
Рэдактар і індэксатар выконваюць шмат дробных аперацый з файламі, і кожная становіцца абаротам, калі файлавая сістэма аддаленая. Гэта робіць прымантаваную працоўную прастору адчувальнай да затрымкі так, як адзіная вялікая копія не адчувальная, таму замер часу пераносу файла амаль нічога не кажа пра тое, як адчуваецца працэс. Аддалены экран мае адваротны профіль: ён перадае безупынны паток і лепш трывае прапускную здольнасць, чым затрымку. Параўнанне двух адным лікам дае ўпэўнены няправільны адказ.
Ні адна са схем не з'яўляецца найхутчэйшай па сваёй прыродзе. Правільны выбар залежыць ад працы, якую вы фактычна робіце, таму наступны крок — паспрабаваць гэтую працу, а не эталон.
Зрабіце перадачу зыходніка яўнай
Калі абедзве машыны маюць працоўную копію, вызначце, якая з іх аўтарытэтная і якую рэвізію выкарыстала аддаленая зборка. Каміт — больш ясная перадача, чым два інструменты, што рэдагуюць адно прымантаванае дрэва, бо каміт мае ідэнтычнасць, а мантаванне не мае. Згенераваныя выхады і даныя індэкса таксама патрабуюць гаспадара, бо яны перабудоўваюцца з зыходніка і не павінны падарожнічаць як зыходнік. Двухбаковы люстэркавы сінхрон без правіл канфліктаў — гэта не працэс, гэта гонка.
Аддаленая зборка таксама патрабуе каб аддалены хост меў правільны ланцуг інструментаў і ўліковыя даныя для прыватных залежнасцей. VPN, які дазваляе дасягнуць хоста, не пазычае яму доступ да вашага ўліковага запісу, і ён не ўсталёўвае там Xcode.
Праверце шлях, перш чым прывязацца да працэсу
Праверце аддалены хост, перш чым праектаваць вакол яго, затым вымерайце канал аперацыямі, якія працэс фактычна выканае. Каманды ніжэй правяраюць ланцуг інструментаў, актыўны каталог распрацоўшчыка і цану назірання за файламі, якая робіць аддаленыя працоўныя прасторы балючымі. Запусціце апошнюю праз сеткавы шлях, а не лакальна.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
Хост без поўнай усталёўкі Xcode вяртае памылку ад xcodebuild, і гэта праблема ланцуга інструментаў, а не сеткі. Каталог распрацоўшчыка паказвае, які Xcode будзе выкарыстоўваць зборка, а шлях, які паказвае толькі на інструменты каманднага радка, азначае, што праграма не ўсталяваная. Замер часу каманды стану рэпазіторыя праз прымантаваны агульны рэсурс непасрэдна выяўляе цану абароту, а параўнанне з лакальным запускам дае лік, які мае значэнне. Калі гэтая розніца ўжо непрыемная, працэс з прымантаванай працоўнай прасторай будзе горшым пад сапраўдным рэдактарам.
Запішыце, якую схему вы выбралі, якая машына валодае зыходнікам і як працуе перадача. Гэтая нататка ператварае наступнае ўключэнне ў працу або замену ноўтбука ў задачу наладкі замест расследавання.