Távoli Mac Xcode-hoz: helyi build, távoli build vagy képernyőmegosztás?
Egy felcsatolt munkaterület és egy távoli Xcode más adatokat mozgat. Döntse el, hol él a forrás, az index és a build, majd mérje meg az oda-vissza utakat.
Egy projekt hálózaton keresztüli megosztása nem helyezi át az Xcode-ot, mert az alkalmazás tovább fut a Mac gépén, és tovább kérdezi a szervertől a projekt adatait. Az Xcode futtatása a távoli Macen és a képernyőjének nézése más elrendezés, amelyben az alkalmazás és a fájljai együtt maradnak, és a kapcsolat csak a megjelenítést és a bemenetet szállítja. Annak eldöntése, melyiket szeretné, mielőtt bármit beállítana, a későbbi zavar nagy részét megoldja.
Három elrendezés fedi le a szokásos eseteket, és abban különböznek, hol él a munkaterület, és melyik gép fordít. A folytatás előtt írja le a válaszát mindkét pontra.
Nevezze meg a gépet, amely az Xcode-ot futtatja
Az első elrendezésben minden helyi: a munkamásolat, az index és a build a Mac gépén él, és a hálózat csak a tároló és a függőségek forgalmát szállítja. A másodikban a projekt az Xcode-dal együtt a távoli Macen marad, így az indexelés és a fordítás a fájlok mellett történik, miközben a kapcsolat képernyőtartalmat és billentyűleütéseket szállít. A harmadikban a szerkesztés helyben történik, és a build egy kifejezett forrásátadás után egy távoli gazdagépen fut. A táblázat megnevezi, mit mozgat mindegyik.
| 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 |
Először a középső oszlopot olvassa el, mert az dönti el, hol jelennek meg a hibák. Az a munkafolyamat, amelynek a forrása távoli, akkor hibázik, amikor a kapcsolat lassú, míg a távoli fordítóval rendelkező munkafolyamat akkor hibázik, amikor az átadás kétértelmű. Csak a harmadik tesz felelőssé mindkettőért.
Az oda-vissza utakat számolja, ne a megabájtokat
Egy szerkesztő és egy indexelő sok kis fájlműveletet bocsát ki, és mindegyik oda-vissza úttá válik, amikor a fájlrendszer távoli. Ez érzékennyé teszi a felcsatolt munkaterületet a késleltetésre oly módon, ahogy egyetlen nagy másolat nem az, ezért egy fájlátvitel időmérése szinte semmit sem mond arról, milyen érzés a munkafolyamat. A távoli megjelenítés profilja az ellenkező: folyamatos adatfolyamot mozgat, és az átbocsátást jobban tűri, mint a késleltetést. A kettőt egyetlen számmal összehasonlítva magabiztos hibás választ kap.
Egyik elrendezés sem természeténél fogva a leggyorsabb. A helyes választás attól függ, milyen munkát végez valójában, ezért a következő lépés az, hogy kipróbálja azt a munkát, nem pedig egy viszonyítási pontot.
Tegye kifejezetté a forrásátadást
Amikor mindkét gép munkamásolatot tart, döntse el, melyik a hiteles, és melyik revíziót használta a távoli build. Egy commit világosabb átadás, mint két eszköz, amely egy felcsatolt munkafát szerkeszt, mert a commitnak van identitása, a csatolásnak nincs. A generált kimenetnek és az indextárolt adatoknak is kell gazda, mert a forrásból épülnek újra, és nem úgy kellene utazniuk, mintha forrás lennének. A konfliktusszabályok nélküli kétirányú tükör nem munkafolyamat, hanem verseny.
A távolról történő buildhez az is szükséges, hogy a távoli gazdagépen a megfelelő eszközlánc legyen és meglegyenek a magánfüggőségek hitelesítő adatai. Az a VPN, amely elérést ad a gazdagéphez, nem adja kölcsön a fiókhozzáférését, és nem telepít oda Xcode-ot.
Ellenőrizze az utat, mielőtt elkötelezné magát egy munkafolyamat mellett
Ellenőrizze a távoli gazdagépet, mielőtt köré tervezne, majd mérje meg a kapcsolatot azokkal a műveletekkel, amelyeket a munkafolyamat valóban végrehajt. Az alábbi parancsok ellenőrzik az eszközláncot, az aktív fejlesztői könyvtárat és a fájlmegfigyelés költségét, amely fájdalmassá teszi a távoli munkaterületeket. Az utolsót a hálózati útvonalon futtassa, nem helyben.
xcode-select -p
xcodebuild -version
ssh mac-builder 'xcodebuild -version'
time git status --porcelain
A teljes Xcode-telepítés nélküli gazdagép hibát ad vissza az xcodebuildtől, és ez eszközlánc-probléma, nem hálózati probléma. A fejlesztői könyvtár megmutatja, melyik Xcode-ot fogja használni a build, és a csak a parancssori eszközökre mutató útvonal azt jelenti, hogy az alkalmazás nincs telepítve. A tároló állapotparancsának időmérése a felcsatolt megosztáson keresztül közvetlenül feltárja az oda-vissza út költségét, és a helyi futtatással való összehasonlítás megadja a számot, amely számít. Ha ez a szakadék már most kellemetlen, a felcsatolt munkaterület munkafolyamata rosszabb lesz egy igazi szerkesztő alatt.
Jegyezze fel, melyik elrendezést választotta, melyik gép birtokolja a forrást, és hogyan működik az átadás. Ez a feljegyzés a következő beilleszkedést vagy laptopcserét konfigurációs feladattá teszi vizsgálódás helyett.