Απομακρυσμένο 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 |
Διαβάστε πρώτα τη μεσαία στήλη, γιατί αυτή καθορίζει πού θα εμφανιστούν οι αποτυχίες. Μια ροή εργασίας της οποίας η πηγή είναι απομακρυσμένη αποτυγχάνει όταν ο σύνδεσμος είναι αργός, ενώ μια ροή εργασίας με απομακρυσμένο μεταγλωττιστή αποτυγχάνει όταν η παράδοση είναι ασαφής. Μόνο η τρίτη σάς καθιστά υπεύθυνους και για τα δύο.
Μετρήστε τις διαδρομές μετ' επιστροφής, όχι τα megabyte
Ένας επεξεργαστής και ένας ευρετηριαστής εκδίδουν πολλές μικρές λειτουργίες αρχείων, και καθεμία γίνεται διαδρομή μετ' επιστροφής όταν το σύστημα αρχείων είναι απομακρυσμένο. Αυτό κάνει έναν προσαρτημένο χώρο εργασίας ευαίσθητο στην καθυστέρηση με τρόπο που ένα μοναδικό μεγάλο αντίγραφο δεν είναι, γι' αυτό η μέτρηση χρόνου μιας μεταφοράς αρχείου δεν σας λέει σχεδόν τίποτα για το πώς νιώθεται η ροή εργασίας. Η απομακρυσμένη προβολή έχει το αντίθετο προφίλ: μεταφέρει μια συνεχή ροή και ανέχεται την απόδοση καλύτερα από την καθυστέρηση. Η σύγκριση των δύο με έναν αριθμό παράγει μια σίγουρη λάθος απάντηση.
Καμία από τις διατάξεις δεν είναι η ταχύτερη από τη φύση της. Η σωστή επιλογή εξαρτάται από την εργασία που κάνετε πραγματικά, γι' αυτό το επόμενο βήμα είναι να δοκιμάσετε αυτή την εργασία και όχι ένα σημείο αναφοράς.
Κάντε την παράδοση της πηγής ρητή
Όταν και τα δύο μηχανήματα κρατούν αντίγραφο εργασίας, αποφασίστε ποιο είναι το έγκυρο και ποια αναθεώρηση χρησιμοποίησε η απομακρυσμένη κατασκευή. Μια υποβολή είναι σαφέστερη παράδοση από δύο εργαλεία που επεξεργάζονται ένα προσαρτημένο δέντρο εργασίας, επειδή η υποβολή έχει ταυτότητα και η προσάρτηση δεν έχει. Τα παραγόμενα αποτελέσματα και τα δεδομένα ευρετηρίου χρειάζονται επίσης ιδιοκτήτη, επειδή ξαναχτίζονται από την πηγή και δεν θα έπρεπε να ταξιδεύουν σαν να ήταν πηγή. Ένας αμφίδρομος καθρέφτης χωρίς κανόνες σύγκρουσης δεν είναι ροή εργασίας, είναι αγώνας.
Η απομακρυσμένη κατασκευή απαιτεί επίσης ο απομακρυσμένος κεντρικός υπολογιστής να διαθέτει τη σωστή αλυσίδα εργαλείων και τα διαπιστευτήρια για ιδιωτικές εξαρτήσεις. Ένα VPN που σας επιτρέπει να φτάσετε τον κεντρικό υπολογιστή δεν του δανείζει την πρόσβαση στον λογαριασμό σας, και δεν εγκαθιστά το Xcode εκεί.
Ελέγξτε τη διαδρομή πριν δεσμευτείτε σε μια ροή εργασίας
Επαληθεύστε τον απομακρυσμένο κεντρικό υπολογιστή πριν σχεδιάσετε γύρω του, και μετά μετρήστε τον σύνδεσμο με τις λειτουργίες που θα εκτελέσει πραγματικά η ροή εργασίας. Οι εντολές παρακάτω ελέγχουν την αλυσίδα εργαλείων, τον ενεργό κατάλογο προγραμματιστή και το κόστος παρατήρησης αρχείων που κάνει οδυνηρούς τους απομακρυσμένους χώρους εργασίας. Εκτελέστε την τελευταία μέσω της διαδρομής δικτύου και όχι τοπικά.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
Ένας κεντρικός υπολογιστής χωρίς πλήρη εγκατάσταση Xcode επιστρέφει σφάλμα από το xcodebuild, και αυτό είναι πρόβλημα αλυσίδας εργαλείων και όχι δικτύου. Ο κατάλογος προγραμματιστή δείχνει ποιο Xcode θα χρησιμοποιήσει η κατασκευή, και μια διαδρομή που δείχνει μόνο στα εργαλεία γραμμής εντολών σημαίνει ότι η εφαρμογή δεν είναι εγκατεστημένη. Η μέτρηση χρόνου της εντολής κατάστασης αποθετηρίου μέσω του προσαρτημένου κοινόχρηστου χώρου αποκαλύπτει άμεσα το κόστος της διαδρομής μετ' επιστροφής, και η σύγκρισή της με τοπική εκτέλεση δίνει τον αριθμό που έχει σημασία. Αν αυτό το χάσμα είναι ήδη δυσάρεστο, η ροή εργασίας με προσαρτημένο χώρο εργασίας θα είναι χειρότερη κάτω από έναν πραγματικό επεξεργαστή.
Καταγράψτε ποια διάταξη επιλέξατε, ποιο μηχάνημα κατέχει την πηγή και πώς λειτουργεί η παράδοση. Αυτή η σημείωση μετατρέπει την επόμενη ένταξη ή την αντικατάσταση φορητού υπολογιστή σε εργασία διαμόρφωσης αντί για έρευνα.