Спільний доступ до проєкту через мережу не переміщує 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

Спочатку прочитайте середній стовпець, бо саме він визначає, де з'являться збої. Робочий процес із віддаленими джерелами зазнає збою, коли канал повільний, а робочий процес із віддаленим компілятором — коли передавання неоднозначне. Лише третій робить вас відповідальним за обидва.

Рахуйте кругові обміни, а не мегабайти

Редактор і індексатор виконують багато дрібних файлових операцій, і кожна з них стає круговим обміном, коли файлова система віддалена. Через це змонтований робочий простір чутливий до затримки так, як не чутлива одна велика копія, тому вимірювання часу передавання файлу майже нічого не говорить про те, яким є робочий процес на дотик. Віддалений дисплей має протилежний профіль: він передає безперервний потік і краще переносить пропускну здатність, ніж затримку. Порівняння двох одним числом дає впевнену неправильну відповідь.

Жоден варіант не є найшвидшим за природою. Правильний вибір залежить від роботи, яку ви справді виконуєте, тому наступний крок — спробувати цю роботу, а не еталонний тест.

Зробіть передавання джерел явним

Коли обидві машини мають робочу копію, вирішіть, яка з них головна і яку ревізію використовувало віддалене збирання. Commit — це ясніше передавання, ніж два інструменти, що редагують одне змонтоване робоче дерево, бо commit має ідентичність, а монтування не має. Згенерований вивід і дані індексу теж потребують власника, бо вони перебудовуються з джерел і не повинні подорожувати так, ніби є джерелами. Двостороннє дзеркало без правил конфліктів — не робочий процес, а перегони.

Віддалене збирання також вимагає, щоб віддалений хост мав правильний ланцюг інструментів і облікові дані для приватних залежностей. VPN, який дає вам змогу дістатися хоста, не позичає йому доступ до вашого облікового запису і не встановлює там Xcode.

Перевірте шлях, перш ніж зобов'язуватися до робочого процесу

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

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

Хост без повного встановлення Xcode повертає помилку від xcodebuild, і це проблема ланцюга інструментів, а не мережі. Каталог розробника показує, який Xcode використає збирання, а шлях, що вказує лише на інструменти командного рядка, означає, що застосунок не встановлено. Вимірювання часу команди стану репозиторію через змонтований спільний ресурс безпосередньо показує вартість кругового обміну, а порівняння з локальним запуском дає число, яке має значення. Якщо цей розрив уже неприємний, робочий процес зі змонтованим робочим простором буде гіршим під справжнім редактором.

Запишіть, який варіант ви обрали, яка машина володіє джерелами і як працює передавання. Цей запис перетворює наступне залучення або заміну ноутбука на завдання налаштування, а не на розслідування.

Схожі статті