Ang pagbabahagi ng proyekto sa network ay hindi naglilipat ng Xcode, dahil patuloy na tumatakbo ang app sa iyong Mac at patuloy na humihingi ng data ng proyekto sa server. Ang pagpapatakbo ng Xcode sa remote na Mac at pagtingin sa screen nito ay ibang kaayusan, kung saan nananatiling magkasama ang app at ang mga file nito at ang link ay nagdadala lamang ng display at iyong input. Ang pagpapasya kung alin sa mga ito ang gusto mo, bago mag-configure ng kahit ano, ay lumulutas sa karamihan ng susunod na kalituhan.

Tatlong kaayusan ang sumasaklaw sa karaniwang mga kaso, at nagkakaiba sila sa kung saan nakatira ang workspace at aling makina ang nagko-compile. Isulat ang iyong sagot sa dalawang puntong iyon bago magpatuloy.

Pangalanan ang makinang nagpapatakbo ng Xcode

Sa unang kaayusan lokal ang lahat: ang working copy, index at build ay nakatira sa iyong Mac, at ang network ay nagdadala lamang ng trapik ng repository at dependencies. Sa pangalawa, nananatili ang proyekto sa remote na Mac kasama ng Xcode, kaya ang indexing at compilation ay nangyayari sa tabi ng mga file habang ang link ay nagdadala ng nilalaman ng screen at mga pagpindot sa key. Sa pangatlo, lokal ang pag-edit at ang isang build ay tumatakbo sa isang remote na host pagkatapos ng tahasang pagpasa ng source. Pinapangalanan ng talahanayan kung ano ang inililipat ng bawat isa.

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

Basahin muna ang gitnang kolum, dahil ito ang nagpapasya kung saan lalabas ang mga pagkabigo. Ang isang workflow na remote ang source ay nabibigo kapag mabagal ang link, samantalang ang isang workflow na may remote na compiler ay nabibigo kapag malabo ang pagpasa. Ang pangatlo lamang ang gumagawa sa iyo na responsable sa pareho.

Bilangin ang mga round trip, hindi ang mga megabyte

Ang isang editor at isang indexer ay naglalabas ng maraming maliliit na operasyon sa file, at bawat isa ay nagiging round trip kapag remote ang filesystem. Ginagawa nitong sensitibo sa latency ang isang naka-mount na workspace sa paraang hindi sensitibo ang isang malaking kopya, kaya ang pagsukat ng oras ng paglilipat ng file ay halos walang sinasabi tungkol sa pakiramdam ng workflow. Ang remote na display ay may kabaligtarang profile: naglilipat ito ng tuloy-tuloy na stream at mas mahusay nitong tinatanggap ang throughput kaysa sa delay. Ang paghahambing ng dalawa sa isang numero ay gumagawa ng kumpiyansang maling sagot.

Walang kaayusan ang likas na pinakamabilis. Ang tamang pagpili ay depende sa trabahong aktwal mong ginagawa, kaya ang susunod na hakbang ay subukan ang trabahong iyon sa halip na isang benchmark.

Gawing tahasan ang pagpasa ng source

Kapag parehong may working copy ang dalawang makina, magpasya kung alin ang may awtoridad at aling revision ang ginamit ng remote na build. Ang commit ay mas malinaw na pagpasa kaysa sa dalawang tool na nag-e-edit ng isang naka-mount na working tree, dahil may pagkakakilanlan ang commit at wala ang mount. Ang nabuong output at data ng index ay nangangailangan din ng may-ari, dahil muling itinatayo ang mga ito mula sa source at hindi dapat maglakbay na parang source. Ang two-way na salamin na walang mga tuntunin sa conflict ay hindi workflow, ito ay karera.

Ang remote na pag-build ay nangangailangan ding magkaroon ang remote na host ng tamang toolchain at ng mga kredensyal para sa pribadong dependencies. Ang VPN na nagpapahintulot sa iyong maabot ang host ay hindi nagpapahiram dito ng access sa iyong account at hindi nag-i-install ng Xcode doon.

Suriin ang landas bago ka magtakda ng workflow

I-verify ang remote na host bago magdisenyo sa paligid nito, pagkatapos ay sukatin ang link gamit ang mga operasyong aktwal na gagawin ng workflow. Sinusuri ng mga utos sa ibaba ang toolchain, ang aktibong developer directory at ang gastos sa pagmamasid ng file na nagpapahirap sa mga remote na workspace. Patakbuhin ang huli sa network path sa halip na lokal.

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

Ang host na walang buong installation ng Xcode ay nagbabalik ng error mula sa xcodebuild, na problema ng toolchain at hindi ng network. Ipinapakita ng developer directory kung aling Xcode ang gagamitin ng build, at ang landas na tumuturo lamang sa command-line tools ay nangangahulugang hindi naka-install ang app. Ang pagsukat ng oras ng utos ng status ng repository sa naka-mount na share ay direktang naglalantad ng gastos ng round trip, at ang paghahambing nito sa lokal na pagtakbo ay nagbibigay ng numerong mahalaga. Kung ang agwat na iyon ay hindi na kasiya-siya, ang workflow na may naka-mount na workspace ay mas magiging masama sa ilalim ng tunay na editor.

Itala kung aling kaayusan ang pinili mo, aling makina ang may-ari ng source at paano gumagana ang pagpasa. Ang tala na iyon ay ginagawang gawain sa configuration ang susunod na onboarding o pagpapalit ng laptop sa halip na isang imbestigasyon.

Kaugnay na mga artikulo