Xcode માટે દૂરસ્થ Mac: સ્થાનિક બિલ્ડ, દૂરસ્થ બિલ્ડ કે સ્ક્રીન શેરિંગ?
માઉન્ટ કરેલું વર્કસ્પેસ અને દૂરસ્થ Xcode જુદા જુદા ડેટા ખસેડે છે. સ્રોત, ઇન્ડેક્સ અને બિલ્ડ ક્યાં રહે છે તે નક્કી કરો, પછી રાઉન્ડ ટ્રિપ માપો.
નેટવર્ક પર પ્રોજેક્ટ શેર કરવાથી Xcode ખસતું નથી, કારણ કે એપ તમારા Mac પર ચાલુ રહે છે અને સર્વર પાસે પ્રોજેક્ટ ડેટા માંગતી રહે છે. દૂરસ્થ Mac પર Xcode ચલાવીને તેની સ્ક્રીન જોવી એ બીજી ગોઠવણ છે, જ્યાં એપ અને તેની ફાઇલો સાથે રહે છે અને લિંક ફક્ત ડિસ્પ્લે અને તમારો ઇનપુટ વહે છે. કંઈપણ ગોઠવતા પહેલાં તમે આમાંથી કયું ઇચ્છો છો તે નક્કી કરવાથી પછીની મોટાભાગની ગૂંચવણ ઉકેલાય છે.
સામાન્ય કિસ્સાઓને ત્રણ ગોઠવણો આવરી લે છે, અને તે વર્કસ્પેસ ક્યાં રહે છે અને કઈ મશીન કમ્પાઇલ કરે છે તેમાં અલગ પડે છે. આગળ વધતા પહેલાં બંને મુદ્દાનો તમારો જવાબ લખો.
Xcode ચલાવતી મશીનનું નામ આપો
પ્રથમ ગોઠવણમાં બધું સ્થાનિક છે: વર્ક કૉપી, ઇન્ડેક્સ અને બિલ્ડ બધું તમારા Mac પર રહે છે, અને નેટવર્ક ફક્ત રિપોઝિટરી અને નિર્ભરતાનો ટ્રાફિક વહે છે. બીજીમાં પ્રોજેક્ટ Xcode સાથે દૂરસ્થ Mac પર રહે છે, તેથી ઇન્ડેક્સિંગ અને કમ્પાઇલેશન ફાઇલોની બાજુમાં થાય છે જ્યારે લિંક સ્ક્રીન સામગ્રી અને કીબોર્ડ દબાણ વહે છે. ત્રીજીમાં સંપાદન સ્થાનિક રીતે થાય છે અને સ્પષ્ટ સ્રોત હસ્તાંતરણ પછી દૂરસ્થ હોસ્ટ પર બિલ્ડ ચાલે છે. ટેબલ જણાવે છે કે દરેક શું ખસેડે છે.
| 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 વાપરશે, અને ફક્ત કમાન્ડ-લાઇન ટૂલ્સ તરફ ઇશારો કરતો પાથ એટલે એપ ઇન્સ્ટોલ નથી. માઉન્ટ કરેલા શેર પર રિપોઝિટરી સ્ટેટસ આદેશનો સમય માપવાથી રાઉન્ડ-ટ્રિપ ખર્ચ સીધો ખુલ્લો પડે છે, અને સ્થાનિક રન સાથે સરખાવવાથી મહત્ત્વની સંખ્યા મળે છે. જો આ અંતર પહેલેથી અપ્રિય હોય, તો વાસ્તવિક એડિટર હેઠળ માઉન્ટ-વર્કસ્પેસ વર્કફ્લો વધુ ખરાબ હશે.
તમે કઈ ગોઠવણ પસંદ કરી, કઈ મશીન સ્રોત ધરાવે છે અને હસ્તાંતરણ કેવી રીતે કામ કરે છે તે નોંધો. તે નોંધ આગળના ઓનબોર્ડિંગ અથવા લેપટોપ બદલીને તપાસને બદલે ગોઠવણી કાર્ય બનાવે છે.