Xcode uchun masofaviy Mac: mahalliy qurish, masofaviy qurish yoki ekran ulashish?
O'rnatilgan ish maydoni va masofaviy Xcode turli ma'lumotlarni ko'chiradi. Manba, indeks va qurish qayerda yashashini hal qiling, so'ng borish-kelishlarni o'lchang.
Loyihani tarmoq orqali ulashish Xcode'ni ko'chirmaydi, chunki ilova Mac'ingizda ishlashda davom etadi va serverdan loyiha ma'lumotlarini so'rab turadi. Xcode'ni masofaviy Mac'da ishga tushirish va uning ekranini ko'rish boshqa tartib bo'lib, unda ilova va uning fayllari birga qoladi, havola esa faqat tasvirni va sizning kiritishingizni tashiydi. Biror narsani sozlashdan oldin qaysi biri kerakligini hal qilish keyingi chalkashlikning katta qismini hal qiladi.
Uch tartib odatiy holatlarni qamrab oladi va ular ish maydoni qayerda yashashi hamda qaysi mashina kompilyatsiya qilishi bilan farq qiladi. Davom etishdan oldin ikkala bandga javobingizni yozib qo'ying.
Xcode'ni ishga tushiruvchi mashinani nomlang
Birinchi tartibda hammasi mahalliy: ish nusxasi, indeks va qurish Mac'ingizda yashaydi, tarmoq esa faqat repozitoriy va bog'liqliklar trafigini tashiydi. Ikkinchisida loyiha Xcode bilan birga masofaviy Mac'da qoladi, shuning uchun indekslash va kompilyatsiya fayllar yonida sodir bo'ladi, havola esa ekran mazmuni va tugma bosishlarini tashiydi. Uchinchisida tahrirlash mahalliy bo'ladi, qurish esa manbani aniq topshirgandan so'ng masofaviy xostda ishlaydi. Jadval har biri nima ko'chirishini nomlaydi.
| Arrangement | Where the source lives | What crosses the link |
|---|---|---|
| Everything local | Local disk | Repository and dependency traffic |
| Remote Xcode, screen shared | Remote disk | Display frames and input events |
| Local edit, remote build | Both, with a handoff | Source transfer, then build output |
Avval o'rta ustunni o'qing, chunki nosozliklar qayerda paydo bo'lishini u hal qiladi. Manbasi masofaviy bo'lgan ish oqimi havola sekin bo'lganda muvaffaqiyatsiz bo'ladi, masofaviy kompilyatorli ish oqimi esa topshirish noaniq bo'lganda muvaffaqiyatsiz bo'ladi. Ikkalasi uchun ham sizni mas'ul qiladigan faqat uchinchisi.
Megabaytlarni emas, borish-kelishlarni sanang
Tahrirlovchi va indekslovchi ko'plab kichik fayl operatsiyalarini chiqaradi va fayl tizimi masofaviy bo'lganda har biri borish-kelishga aylanadi. Bu o'rnatilgan ish maydonini bitta katta nusxa bo'lmagan darajada kechikishga sezgir qiladi, shuning uchun fayl uzatish vaqtini o'lchash ish oqimi qanday his qilishini deyarli aytmaydi. Masofaviy displey qarama-qarshi profilga ega: u uzluksiz oqimni ko'chiradi va kechikishdan ko'ra o'tkazuvchanlikni yaxshiroq ko'taradi. Ikkalasini bitta raqam bilan taqqoslash ishonchli noto'g'ri javob beradi.
Hech bir tartib tabiatan eng tez emas. To'g'ri tanlov siz haqiqatda qiladigan ishga bog'liq, shuning uchun keyingi qadam benchmark emas, o'sha ishni sinab ko'rishdir.
Manba topshirishni aniq qiling
Ikkala mashinada ham ish nusxasi bo'lsa, qaysi biri vakolatli va masofaviy qurish qaysi reviziyani ishlatganini hal qiling. Commit bitta o'rnatilgan ish daraxtini tahrirlaydigan ikkita asbobdan ko'ra aniqroq topshirishdir, chunki commitning o'ziga xosligi bor, o'rnatishning esa yo'q. Yaratilgan natija va indeks ma'lumotlari ham egaga muhtoj, chunki ular manbadan qayta quriladi va manba kabi sayohat qilmasligi kerak. Ziddiyat qoidalarisiz ikki tomonlama ko'zgu ish oqimi emas, bu poyga.
Masofadan qurish ham masofaviy xostda to'g'ri asboblar zanjiri bo'lishini talab qiladi va xususiy bog'liqliklar uchun hisob ma'lumotlarini talab qiladi. Xostga yetib borishga imkon beruvchi VPN sizning hisobingizga kirishni unga qarz bermaydi va u yerda Xcode o'rnatmaydi.
Ish oqimiga bog'lanishdan oldin yo'lni tekshiring
Masofaviy xostni uning atrofida loyihalashdan oldin tekshiring, so'ng havolani ish oqimi haqiqatda bajaradigan operatsiyalar bilan o'lchang. Quyidagi buyruqlar asboblar zanjirini, faol dasturchi katalogini va masofaviy ish maydonlarini og'riqli qiladigan fayl kuzatish xarajatini tekshiradi. Oxirgisini mahalliy emas, tarmoq yo'li orqali ishga tushiring.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
To'liq Xcode o'rnatilmagan xost xcodebuild'dan xato qaytaradi, bu tarmoq emas, asboblar zanjiri muammosi. Dasturchi katalogi qurish qaysi Xcode'ni ishlatishini ko'rsatadi va faqat buyruq qatori asboblariga ishora qiluvchi yo'l ilova o'rnatilmaganini bildiradi. Repozitoriy holati buyrug'ining vaqtini o'rnatilgan ulashish orqali o'lchash borish-kelish xarajatini to'g'ridan-to'g'ri ochib beradi va mahalliy ishga tushirish bilan taqqoslash muhim raqamni beradi. Agar bu farq allaqachon noqulay bo'lsa, o'rnatilgan ish maydoni ish oqimi haqiqiy tahrirlovchi ostida yanada yomon bo'ladi.
Qaysi tartibni tanlaganingizni, manbaga qaysi mashina egalik qilishini va topshirish qanday ishlashini yozib qo'ying. Bu eslatma keyingi ishga qabul qilish yoki noutbukni almashtirishni tergov emas, sozlash vazifasiga aylantiradi.