Споделянето на проект по мрежата не мести Xcode, защото приложението продължава да работи на вашия Mac и продължава да иска данни за проекта от сървъра. Стартирането на Xcode на отдалечения Mac и гледането на екрана му е друга подредба, при която приложението и файловете му остават заедно, а връзката носи само изображението и вашия вход. Решаването кое от двете искате, преди да настроите каквото и да е, урежда по-голямата част от по-късното объркване.

Три подредби покриват обичайните случаи и се различават по това къде живее работното пространство и коя машина компилира. Запишете отговора си за двете точки, преди да продължите.

Назовайте машината, която изпълнява Xcode

При първата подредба всичко е локално: работното копие, индексът и изграждането живеят на вашия Mac, а мрежата носи само трафика на хранилището и зависимостите. При втората проектът остава на отдалечения Mac с Xcode, така че индексирането и компилацията се случват до файловете, докато връзката носи съдържание на екрана и натискания на клавиши. При третата редактирането е локално, а изграждането се изпълнява на отдалечен хост след явно предаване на изходния код. Таблицата посочва какво мести всяка от тях.

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

Прочетете първо средната колона, защото тя определя къде ще се появят отказите. Работен поток, чийто изходен код е отдалечен, се проваля, когато връзката е бавна, докато работен поток с отдалечен компилатор се проваля, когато предаването е двусмислено. Само третата ви прави отговорен и за двете.

Бройте обиколките, не мегабайтите

Редакторът и индексаторът издават много малки файлови операции и всяка става обиколка, когато файловата система е отдалечена. Това прави монтираното работно пространство чувствително към закъснение по начин, по който едно голямо копие не е, затова измерването на времето за пренос на файл не ви казва почти нищо за това как се усеща работният поток. Отдалеченият екран има обратния профил: той движи непрекъснат поток и понася пропускателната способност по-добре, отколкото закъснението. Сравняването на двете с едно число дава уверен грешен отговор.

Нито една от подредбите не е най-бърза по природа. Правилният избор зависи от работата, която наистина вършите, затова следващата стъпка е да опитате тази работа, а не еталон.

Направете предаването на изходния код явно

Когато и двете машини държат работно копие, решете коя е авторитетна и коя ревизия е използвало отдалеченото изграждане. Коммитът е по-ясно предаване от два инструмента, редактиращи едно монтирано работно дърво, защото коммитът има идентичност, а монтирането не. Генерираният изход и данните на индекса също се нуждаят от собственик, защото се преизграждат от изходния код и не бива да пътуват като изходен код. Двупосочно огледало без правила за конфликти не е работен поток, а състезание.

Изграждането отдалеч също изисква отдалеченият хост да разполага с правилната верига от инструменти и идентификационните данни за частни зависимости. VPN, който ви позволява да достигнете хоста, не му дава достъп до вашия акаунт и не инсталира Xcode там.

Проверете пътя, преди да се обвържете с работен поток

Проверете отдалечения хост, преди да проектирате около него, после измерете връзката с операциите, които работният поток наистина ще извърши. Командите по-долу проверяват веригата от инструменти, активната директория на разработчика и цената на наблюдението на файлове, която прави отдалечените работни пространства болезнени. Изпълнете последната по мрежовия път, а не локално.

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

Хост без пълна инсталация на Xcode връща грешка от xcodebuild и това е проблем с веригата от инструменти, а не с мрежата. Директорията на разработчика показва кой Xcode ще използва изграждането, а път, който сочи само към инструментите от командния ред, означава, че приложението не е инсталирано. Измерването на времето на командата за състояние на хранилището през монтирания дял разкрива цената на обиколката директно, а сравняването с локално изпълнение дава числото, което има значение. Ако тази разлика вече е неприятна, работният поток с монтирано работно пространство ще бъде по-лош под истински редактор.

Запишете коя подредба избрахте, коя машина притежава изходния код и как работи предаването. Тази бележка превръща следващото включване в работа или смяната на лаптоп в задача по конфигурация вместо разследване.

Подобни статии