Mac מרוחק ל-Xcode: בנייה מקומית, בנייה מרחוק או שיתוף מסך?
סביבת עבודה מותקנת ו-Xcode מרוחק מעבירים נתונים שונים. החליטו היכן חיים המקור, האינדקס והבנייה, ואז מדדו את ההלוך-חזור.
שיתוף פרויקט ברשת אינו מעביר את Xcode, מפני שהאפליקציה ממשיכה לרוץ על ה-Mac שלכם וממשיכה לבקש נתוני פרויקט מהשרת. הרצת Xcode על ה-Mac המרוחק וצפייה במסך שלו היא סידור אחר, שבו האפליקציה והקבצים שלה נשארים יחד והקישור נושא רק את התצוגה ואת הקלט שלכם. החלטה איזה משניהם אתם רוצים, לפני שמגדירים משהו, פותרת את רוב הבלבול המאוחר.
שלושה סידורים מכסים את המקרים הרגילים, והם נבדלים בכך היכן נמצאת סביבת העבודה ואיזה מחשב מהדר. רשמו את התשובה שלכם לשני הנקודות לפני שממשיכים.
תנו שם למכונה שמריצה את Xcode
בסידור הראשון הכול מקומי: עותק העבודה, האינדקס והבנייה חיים על ה-Mac שלכם, והרשת נושאת רק תעבורת מאגר ותלויות. בשני הפרויקט נשאר על ה-Mac המרוחק עם Xcode, כך שהאינדוקס וההידור מתרחשים לצד הקבצים בזמן שהקישור נושא תוכן מסך ולחיצות מקלדת. בשלישי העריכה מתרחשת מקומית ובנייה רצה על מארח מרוחק לאחר מסירת מקור מפורשת. הטבלה מפרטת מה כל אחד מהם מעביר.
| 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 |
קראו קודם את העמודה האמצעית, מפני שהיא קובעת היכן יופיעו כשלים. תהליך עבודה שהמקור שלו מרוחק נכשל כשהקישור איטי, ואילו תהליך עבודה עם מהדר מרוחק נכשל כשהמסירה עמומה. רק השלישי הופך אתכם לאחראים לשניהם.
ספרו את ההלוך-חזור, לא את המגה-בייט
עורך ומאנדקס מבצעים פעולות קבצים קטנות רבות, וכל אחת מהן הופכת להלוך-חזור כשמערכת הקבצים מרוחקת. זה הופך סביבת עבודה מותקנת לרגישה להשהיה באופן שבו עותק גדול אחד אינו רגיש, ולכן מדידת הזמן של העברת קובץ אינה אומרת לכם כמעט דבר על איך תהליך העבודה מרגיש. לתצוגה מרוחקת יש פרופיל הפוך: היא מעבירה זרם רציף וסובלת רוחב פס טוב יותר מאשר השהיה. השוואה בין השניים במספר אחד מייצרת תשובה שגויה ובטוחה בעצמה.
אף אחד מהסידורים אינו המהיר ביותר מטבעו. הבחירה הנכונה תלויה בעבודה שאתם באמת עושים, ולכן הצעד הבא הוא לנסות את העבודה הזו ולא אמת מידה.
הפכו את מסירת המקור למפורשת
כששתי המכונות מחזיקות עותק עבודה, החליטו איזו מהן סמכותית ואיזו גרסה השתמשה הבנייה המרוחקת. קומיט הוא מסירה ברורה יותר משני כלים שעורכים עץ עבודה מותקן אחד, מפני שלקומיט יש זהות ולעיגון אין. גם לפלט שנוצר ולנתוני האינדקס דרוש בעלים, מפני שהם נבנים מחדש מהמקור ולא אמורים לנסוע כאילו היו מקור. מראה דו-כיוונית בלי כללי התנגשות אינה תהליך עבודה, היא מירוץ.
בנייה מרחוק דורשת גם שה-Mac המרוחק יחזיק בשרשרת הכלים הנכונה ובאישורי הגישה לתלויות פרטיות. VPN שמאפשר לכם להגיע למארח אינו מלווה לו את הגישה לחשבון שלכם, והוא אינו מתקין שם Xcode.
בדקו את המסלול לפני שאתם מתחייבים לתהליך עבודה
אמתו את המארח המרוחק לפני שאתם מעצבים סביבו, ואז מדדו את הקישור עם הפעולות שתהליך העבודה באמת יבצע. הפקודות שלמטה בודקות את שרשרת הכלים, את ספריית המפתח הפעילה ואת עלות הניטור של קבצים שהופכת סביבות עבודה מרוחקות לכואבות. הריצו את האחרונה דרך מסלול הרשת ולא מקומית.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
מארח בלי התקנה מלאה של Xcode מחזיר שגיאה מ-xcodebuild, וזו בעיה של שרשרת כלים ולא של רשת. ספריית המפתח מראה איזה Xcode הבנייה תשתמש בו, ונתיב שמצביע רק על כלי שורת הפקודה משמעו שהאפליקציה אינה מותקנת. מדידת הזמן של פקודת מצב המאגר דרך השיתוף המותקן חושפת את עלות ההלוך-חזור ישירות, והשוואה להרצה מקומית נותנת את המספר שחשוב. אם הפער הזה כבר לא נעים, תהליך העבודה עם סביבת העבודה המותקנת יהיה גרוע יותר תחת עורך אמיתי.
רשמו איזה סידור בחרתם, איזו מכונה מחזיקה במקור ואיך המסירה עובדת. ההערה הזו הופכת את ההיכרות הבאה או החלפת המחשב הנייד למשימת תצורה במקום לחקירה.