Оддалечен 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 ќе го користи градењето, а патека што покажува само на алатките од командната линија значи дека апликацијата не е инсталирана. Мерењето на времето на командата за состојба на складиштето преку монтираното споделување директно ја открива цената на патувањето таму и назад, а споредбата со локално извршување го дава бројот што е важен. Ако таа разлика веќе е непријатна, работниот тек со монтиран работен простор ќе биде полош под вистински уредувач.
Запишете кој распоред го избравте, која машина го поседува изворот и како функционира пренесувањето. Таа белешка го претвора следното воведување или замената на преносен сметач во конфигурациска задача наместо истрага.