Layihəni şəbəkə üzərindən paylaşmaq Xcode-u yerindən tərpətmir, çünki tətbiq Mac-da işləməyə davam edir və serverdən layihə məlumatı istəməyə davam edir. Xcode-u uzaq Mac-da işlətmək və ekranına baxmaq başqa bir düzümdür; orada tətbiq və faylları bir yerdə qalır, əlaqə isə yalnız ekranı və girişinizi daşıyır. Nə istədiyinizi, hər şeyi qurmağa başlamazdan əvvəl qərarlaşdırmaq sonrakı qarışıqlığın çoxunu həll edir.

Adi halları üç düzüm əhatə edir və onlar iş sahəsinin harada yaşamasına və hansı maşının kompilyasiya etməsinə görə fərqlənirlər. Davam etməzdən əvvəl hər iki suala cavabınızı yazın.

Xcode-u işlədən maşının adını çəkin

Birinci düzümdə hər şey yerlidir: işçi surət, indeks və qurma hamısı Mac-da yaşayır, şəbəkə isə yalnız repozitoriya və asılılıq trafikini daşıyır. İkincidə layihə Xcode ilə birlikdə uzaq Mac-da qalır, beləliklə indeksləmə və kompilyasiya faylların yanında baş verir, əlaqə isə ekran məzmununu və klaviş vuruşlarını daşıyır. Üçüncüdə redaktə yerli baş verir və qurma açıq mənbə təhvilindən sonra uzaq hostda icra olunur. Cədvəl hər birinin nəyi köçürdüyünü adlandırır.

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

Əvvəlcə orta sütunu oxuyun, çünki nasazlıqların harada görünəcəyini o müəyyən edir. Mənbəyi uzaqda olan iş axını əlaqə yavaş olduqda uğursuz olur, uzaq kompilyatoru olan iş axını isə təhvil qeyri-müəyyən olduqda uğursuz olur. Yalnız üçüncüsü sizi hər ikisi üçün məsul edir.

Meqabaytları deyil, gediş-dönüşləri sayın

Redaktor və indeksləyici çoxlu kiçik fayl əməliyyatı icra edir və fayl sistemi uzaq olduqda hər biri bir gediş-dönüşə çevrilir. Bu, qoşulmuş iş sahəsini gecikməyə həssas edir; tək böyük surət isə belə deyil, buna görə fayl köçürməsini vaxtlamaq iş axınının necə hiss olunduğu barədə demək olar ki, heç nə demir. Uzaq ekran əks profilə malikdir: davamlı axın hərəkət etdirir və ötürmə qabiliyyətinə gecikmədən daha yaxşı dözür. İkisini bir rəqəmlə müqayisə etmək arxayın səhv cavab verir.

Düzümlərin heç biri təbiətcə ən sürətli deyil. Düzgün seçim əslində gördüyünüz işdən asılıdır, buna görə növbəti addım ölçmə deyil, həmin işi sınamaqdır.

Mənbə təhvilini açıq et

Hər iki maşın işçi surət saxlayanda hansının səlahiyyətli olduğunu və uzaq qurmanın hansı revizyadan istifadə etdiyini qərarlaşdırın. Kommit iki alətin bir qoşulmuş iş ağacını redaktə etməsindən daha aydın təhvildir, çünki kommitin kimliyi var, qoşulmanın isə yox. Yaradılan çıxış və indeks məlumatının da sahibi lazımdır, çünki onlar mənbədən yenidən qurulur və mənbə kimi səyahət etməməlidir. Konflikt qaydaları olmayan iki tərəfli güzgü iş axını deyil, yarışdır.

Uzaqdan qurma həm də uzaq hostun düzgün alət zəncirinə sahib olmasını tələb edir və özəl asılılıqlar üçün etimad məlumatlarını tələb edir. Hosta çatmağa imkan verən VPN sizə hesab girişinizi ondan borc almır və orada Xcode quraşdırmır.

İş axınına bağlanmazdan əvvəl yolu yoxlayın

Uzaq hostu onun ətrafında dizayn qurmazdan əvvəl yoxlayın, sonra əlaqəni iş axınının həqiqətən icra edəcəyi əməliyyatlarla ölçün. Aşağıdakı əmrlər alət zəncirini, aktiv tərtibatçı qovluğunu və uzaq iş sahələrini ağrılı edən fayl müşahidə xərcini yoxlayır. Sonuncunu yerli deyil, şəbəkə yolu üzərindən işlədin.

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

Tam Xcode quraşdırması olmayan host xcodebuild-dən xəta qaytarır və bu, şəbəkə deyil, alət zənciri problemidir. Tərtibatçı qovluğu qurmanın hansı Xcode-dan istifadə edəcəyini göstərir və yalnız əmr sətri alətlərinə işarə edən yol tətbiqin quraşdırılmadığını bildirir. Repozitoriya statusu əmrini qoşulmuş paylaşım üzərindən vaxtlamaq gediş-dönüş xərcini birbaşa üzə çıxarır və yerli işlətmə ilə müqayisə vacib rəqəmi verir. Bu fərq artıq narahatedicidirsə, qoşulmuş iş sahəsi iş axını real redaktorda daha pis olacaq.

Hansı düzümü seçdiyinizi, mənbəyə hansı maşının sahib olduğunu və təhvilin necə işlədiyini qeyd edin. Bu qeyd növbəti işə qəbulu və ya noutbukun dəyişdirilməsini araşdırma deyil, konfiqurasiya tapşırığına çevirir.

Əlaqəli məqalələr