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 |
อ่านคอลัมน์กลางก่อน เพราะมันกำหนดว่าความล้มเหลวจะปรากฏที่ใด เวิร์กโฟลว์ที่ซอร์สอยู่ระยะไกลล้มเหลวเมื่อลิงก์ช้า ขณะที่เวิร์กโฟลว์ที่มีคอมไพเลอร์ระยะไกลล้มเหลวเมื่อการส่งต่อคลุมเครือ มีเพียงแบบที่สามที่ทำให้คุณรับผิดชอบทั้งสองอย่าง
นับการเดินทางไปกลับ ไม่ใช่เมกะไบต์
เอดิเตอร์และตัวทำดัชนีออกคำสั่งไฟล์ขนาดเล็กจำนวนมาก และแต่ละครั้งกลายเป็นการเดินทางไปกลับเมื่อระบบไฟล์อยู่ระยะไกล นั่นทำให้พื้นที่ทำงานที่เมานต์ไว้อ่อนไหวต่อความหน่วงในแบบที่สำเนาใหญ่ชิ้นเดียวไม่เป็น ซึ่งเป็นเหตุให้การจับเวลาการถ่ายโอนไฟล์แทบไม่บอกอะไรเกี่ยวกับความรู้สึกของเวิร์กโฟลว์ การแสดงผลระยะไกลมีโปรไฟล์ตรงกันข้าม คือส่งสตรีมต่อเนื่องและทนต่อทรูพุตได้ดีกว่าความหน่วง การเปรียบเทียบทั้งสองด้วยตัวเลขเดียวให้คำตอบผิดอย่างมั่นใจ
ไม่มีการจัดวางใดเร็วที่สุดโดยธรรมชาติ การเลือกที่ถูกต้องขึ้นอยู่กับงานที่คุณทำจริง ซึ่งเป็นเหตุให้ขั้นถัดไปคือลองงานนั้นแทนการทดสอบมาตรฐาน
ทำให้การส่งต่อซอร์สชัดเจน
เมื่อทั้งสองเครื่องมีสำเนาทำงาน ให้ตัดสินใจว่าเครื่องใดเป็นผู้มีอำนาจและรีวิชันใดที่การสร้างระยะไกลใช้ คอมมิตเป็นการส่งต่อที่ชัดเจนกว่าสองเครื่องมือที่แก้ไขต้นไม้ทำงานที่เมานต์เดียว เพราะคอมมิตมีตัวตนแต่การเมานต์ไม่มี เอาต์พุตที่สร้างขึ้นและข้อมูลดัชนีก็ต้องการเจ้าของ เพราะมันถูกสร้างใหม่จากซอร์สและไม่ควรเดินทางราวกับเป็นซอร์ส กระจกสองทางที่ไม่มีกฎความขัดแย้งไม่ใช่เวิร์กโฟลว์ แต่คือการแข่งขัน
การสร้างระยะไกลยัง ต้องให้โฮสต์ระยะไกลมีชุดเครื่องมือที่ถูกต้อง และข้อมูลรับรองสำหรับดีพเพนเดนซีส่วนตัว VPN ที่ให้คุณเข้าถึงโฮสต์ไม่ได้ให้สิทธิ์บัญชีของคุณแก่โฮสต์และไม่ได้ติดตั้ง Xcode ที่นั่น
ตรวจสอบเส้นทางก่อนผูกมัดกับเวิร์กโฟลว์
ตรวจสอบโฮสต์ระยะไกลก่อนออกแบบงานรอบ ๆ แล้ววัดลิงก์ด้วยปฏิบัติการที่เวิร์กโฟลว์จะทำจริง คำสั่งด้านล่างตรวจสอบชุดเครื่องมือ ไดเรกทอรีนักพัฒนาที่ใช้งาน และต้นทุนการเฝ้าดูไฟล์ที่ทำให้พื้นที่ทำงานระยะไกลเจ็บปวด รันคำสั่งสุดท้ายผ่านเส้นทางเครือข่ายแทนที่จะรันในเครื่อง
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
โฮสต์ที่ไม่มี Xcode ติดตั้งเต็มจะคืนข้อผิดพลาดจาก xcodebuild ซึ่งเป็นปัญหาเครื่องมือไม่ใช่เครือข่าย ไดเรกทอรีนักพัฒนาแสดงว่า Xcode ตัวใดจะถูกใช้สร้าง และเส้นทางที่ชี้เฉพาะเครื่องมือบรรทัดคำสั่งหมายความว่าแอปยังไม่ได้ติดตั้ง การจับเวลาคำสั่งสถานะรีโพซิทอรีผ่านแชร์ที่เมานต์เผยต้นทุนการเดินทางไปกลับโดยตรง และการเปรียบเทียบกับการรันในเครื่องให้ตัวเลขที่สำคัญ หากช่องว่างนั้นไม่น่าพอใจอยู่แล้ว เวิร์กโฟลว์พื้นที่ทำงานที่เมานต์จะแย่ลงภายใต้เอดิเตอร์จริง
บันทึกว่าคุณเลือกการจัดวางแบบใด เครื่องใดเป็นเจ้าของซอร์ส และการส่งต่อทำงานอย่างไร บันทึกนั้นเปลี่ยนการเริ่มงานหรือการเปลี่ยนแล็ปท็อปครั้งถัดไปให้เป็นงานกำหนดค่าแทนการสอบสวน