Vzdialený Mac pre Xcode: lokálne zostavenie, vzdialené zostavenie alebo zdieľanie obrazovky?
Pripravený pracovný priestor a vzdialený Xcode presúvajú odlišné dáta. Rozhodnite, kde žije zdroj, index a zostavenie, potom zmerajte spiatočné cesty.
Zdieľanie projektu cez sieť nepresúva Xcode, pretože aplikácia ďalej beží na vašom Macu a naďalej žiada server o údaje projektu. Spúšťanie Xcode na vzdialenom Macu a sledovanie jeho obrazovky je iné usporiadanie, v ktorom aplikácia a jej súbory zostávajú spolu a spojenie prenáša len obraz a váš vstup. Rozhodnutie, ktoré z toho chcete, urobené pred akoukoľvek konfiguráciou, odstráni väčšinu neskorších zmätkov.
Tri usporiadania pokrývajú bežné prípady a líšia sa tým, kde žije pracovný priestor a ktorý stroj zostavuje. Pred pokračovaním si zapíšte odpoveď na obidva body.
Pomenujte stroj, ktorý spúšťa Xcode
V prvom usporiadaní je všetko lokálne: pracovná kópia, index a zostavenie žijú na vašom Macu a sieť prenáša len prevádzku repozitára a závislostí. V druhom zostáva projekt na vzdialenom Macu s Xcodeom, takže indexovanie a kompilácia prebiehajú vedľa súborov, kým spojenie prenáša obsah obrazovky a stlačenia klávesov. V treťom prebieha úprava lokálne a zostavenie sa spúšťa na vzdialenom hostiteľovi po výslovnom odovzdaní zdroja. Tabuľka pomenúva, čo každé z nich presúva.
| 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 |
Najprv si prečítajte stredný stĺpec, pretože určuje, kde sa objavia zlyhania. Pracovný postup so vzdialeným zdrojom zlyháva pri pomalom spojení, kým pracovný postup so vzdialeným kompilátorom zlyháva pri nejednoznačnom odovzdaní. Iba tretie vás robí zodpovedným za oboje.
Počítajte spiatočné cesty, nie megabajty
Editor a indexer vydávajú mnoho malých súborových operácií a každá sa pri vzdialenom súborovom systéme stáva spiatočnou cestou. To robí pripravený pracovný priestor citlivým na latenciu spôsobom, akým jedna veľká kópia nie je, a preto meranie času prenosu súboru takmer nič nehovorí o tom, aký je pracovný postup v praxi. Vzdialené zobrazenie má opačný profil: prenáša nepretržitý tok a znáša priepustnosť lepšie ako oneskorenie. Porovnanie oboch jedným číslom dáva sebavedomú nesprávnu odpoveď.
Žiadne usporiadanie nie je od prírody najrýchlejšie. Správna voľba závisí od práce, ktorú skutočne robíte, preto je ďalším krokom vyskúšať túto prácu, nie porovnávací test.
Urobte odovzdanie zdroja výslovným
Keď oba stroje majú pracovnú kópiu, rozhodnite, ktorý je smerodajný a ktorú revíziu vzdialené zostavenie použilo. Commit je jasnejšie odovzdanie ako dva nástroje upravujúce jeden pripravený pracovný strom, pretože commit má identitu a pripojenie nie. Vygenerovaný výstup a údaje indexu tiež potrebujú vlastníka, pretože sa obnovujú zo zdroja a nemali by cestovať, akoby boli zdrojom. Obojsmerné zrkadlenie bez pravidiel konfliktov nie je pracovný postup, je to preteky.
Zostavovanie na diaľku tiež vyžaduje, aby vzdialený hostiteľ mal správny nástrojový reťazec a prihlasovacie údaje pre súkromné závislosti. VPN, ktorá vám umožní dosiahnuť hostiteľa, mu nepožičiava prístup k vášmu účtu a nenainštaluje tam Xcode.
Skontrolujte cestu, skôr než sa zaviazete k pracovnému postupu
Skontrolujte vzdialeného hostiteľa, skôr než okolo neho navrhnete prácu, potom zmerajte spojenie operáciami, ktoré bude pracovný postup skutočne vykonávať. Príkazy nižšie kontrolujú nástrojový reťazec, aktívny adresár vývojára a náklady na sledovanie súborov, ktoré robia vzdialené pracovné priestory bolestivými. Posledný príkaz spustite cez sieťovú cestu, nie lokálne.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
Hostiteľ bez úplnej inštalácie Xcode vráti chybu z xcodebuild, čo je problém nástrojového reťazca, nie siete. Adresár vývojára ukazuje, ktorý Xcode zostavenie použije, a cesta ukazujúca iba na nástroje príkazového riadka znamená, že aplikácia nie je nainštalovaná. Meranie času príkazu stavu repozitára cez pripravené zdieľanie priamo odhaľuje náklady spiatočnej cesty a porovnanie s lokálnym spustením dáva číslo, ktoré má význam. Ak je ten rozdiel už nepríjemný, pracovný postup s pripraveným pracovným priestorom bude pod skutočným editorom horší.
Zapíšte, aké usporiadanie ste si vybrali, ktorý stroj vlastní zdroj a ako odovzdanie funguje. Táto poznámka premení ďalšie zaškolenie alebo výmenu notebooku na konfiguračnú úlohu namiesto vyšetrovania.