Udostępnianie projektu w sieci nie przenosi Xcode, ponieważ aplikacja nadal działa na twoim Macu i nadal prosi serwer o dane projektu. Uruchamianie Xcode na zdalnym Macu i patrzenie na jego ekran to inny układ, w którym aplikacja i jej pliki zostają razem, a łącze przenosi tylko obraz i twoje dane wejściowe. Rozstrzygnięcie, którego z nich chcesz, zanim cokolwiek skonfigurujesz, usuwa większość późniejszego zamieszania.

Trzy układy pokrywają typowe przypadki i różnią się tym, gdzie mieszka przestrzeń robocza i która maszyna kompiluje. Zapisz odpowiedź na oba punkty, zanim przejdziesz dalej.

Nazwij maszynę, która uruchamia Xcode

W pierwszym układzie wszystko jest lokalne: kopia robocza, indeks i kompilacja żyją na twoim Macu, a sieć przenosi tylko ruch repozytorium i zależności. W drugim projekt zostaje na zdalnym Macu razem z Xcode, więc indeksowanie i kompilacja odbywają się obok plików, a łącze przenosi zawartość ekranu i naciśnięcia klawiszy. W trzecim edycja odbywa się lokalnie, a kompilacja rusza na zdalnym hoście po wyraźnym przekazaniu źródeł. Tabela nazywa, co przenosi każdy z nich.

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

Najpierw przeczytaj środkową kolumnę, bo ona decyduje, gdzie pojawią się awarie. Przepływ pracy ze zdalnymi źródłami zawodzi, gdy łącze jest wolne, a przepływ ze zdalnym kompilatorem zawodzi, gdy przekazanie jest niejednoznaczne. Tylko trzeci czyni cię odpowiedzialnym za oba.

Licz podróże w obie strony, nie megabajty

Edytor i indekser wysyłają wiele małych operacji na plikach, a każda z nich staje się podróżą w obie strony, gdy system plików jest zdalny. To czyni zamontowaną przestrzeń roboczą wrażliwą na opóźnienia w sposób, w jaki jedna duża kopia nie jest, dlatego mierzenie czasu transferu pliku prawie nic nie mówi o tym, jak odczuwa się przepływ pracy. Zdalny obraz ma odwrotny profil: przenosi ciągły strumień i lepiej znosi przepustowość niż opóźnienie. Porównanie obu jedną liczbą daje pewną siebie błędną odpowiedź.

Żaden układ nie jest z natury najszybszy. Właściwy wybór zależy od pracy, którą naprawdę wykonujesz, dlatego następnym krokiem jest wypróbowanie tej pracy, a nie benchmarku.

Uczyń przekazanie źródeł wyraźnym

Gdy obie maszyny mają kopię roboczą, zdecyduj, która jest autorytatywna i której wersji użyła zdalna kompilacja. Commit jest jaśniejszym przekazaniem niż dwa narzędzia edytujące jedno zamontowane drzewo robocze, bo commit ma tożsamość, a montowanie nie. Wygenerowane dane wyjściowe i dane indeksu też potrzebują właściciela, bo są odbudowywane ze źródeł i nie powinny podróżować tak, jakby były źródłami. Dwukierunkowe lustro bez reguł konfliktów nie jest przepływem pracy, to wyścig.

Kompilacja zdalna wymaga też aby zdalny host miał właściwy łańcuch narzędzi i poświadczeń do prywatnych zależności. VPN, który pozwala dotrzeć do hosta, nie użycza mu dostępu do twojego konta i nie instaluje tam Xcode.

Sprawdź ścieżkę, zanim zwiążesz się z przepływem pracy

Zweryfikuj zdalny host, zanim zaprojektujesz wokół niego, a potem zmierz łącze operacjami, które przepływ pracy naprawdę wykona. Poniższe polecenia sprawdzają łańcuch narzędzi, aktywny katalog dewelopera i koszt obserwacji plików, który czyni zdalne przestrzenie robocze bolesnymi. Uruchom ostatnie po ścieżce sieciowej, a nie lokalnie.

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

Host bez pełnej instalacji Xcode zwraca błąd z xcodebuild, a to problem łańcucha narzędzi, nie sieci. Katalog dewelopera pokazuje, którego Xcode użyje kompilacja, a ścieżka wskazująca tylko narzędzia wiersza poleceń oznacza, że aplikacja nie jest zainstalowana. Mierzenie czasu polecenia stanu repozytorium przez zamontowany udział wprost ujawnia koszt podróży w obie strony, a porównanie z uruchomieniem lokalnym daje liczbę, która ma znaczenie. Jeśli ta różnica już jest nieprzyjemna, przepływ z zamontowaną przestrzenią roboczą będzie gorszy pod prawdziwym edytorem.

Zapisz, który układ wybrałeś, która maszyna jest właścicielem źródeł i jak działa przekazanie. Ta notatka zamienia następne wdrożenie lub wymianę laptopa w zadanie konfiguracyjne zamiast śledztwa.

Powiązane artykuły