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 ഉപയോഗിക്കും എന്ന് കാണിക്കുന്നു, കമാൻഡ് ലൈൻ ടൂളുകളെ മാത്രം ചൂണ്ടുന്ന പാത എന്നാൽ ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല എന്നാണ്. മൗണ്ട് ചെയ്ത പങ്കിടലിലൂടെ റിപ്പോസിറ്ററി സ്റ്റാറ്റസ് കമാൻഡിന്റെ സമയം അളക്കുന്നത് യാത്രയുടെ ചെലവ് നേരിട്ട് വെളിപ്പെടുത്തുന്നു, പ്രാദേശിക പ്രവർത്തനവുമായി താരതമ്യം ചെയ്യുന്നത് പ്രധാനമായ സംഖ്യ നൽകുന്നു. ആ വിടവ് ഇതിനകം അപ്രിയമാണെങ്കിൽ, യഥാർത്ഥ എഡിറ്ററിന് കീഴിൽ മൗണ്ട്-വർക്ക്സ്പേസ് വർക്ക്ഫ്ലോ കൂടുതൽ മോശമാകും.
ഏത് ക്രമം തിരഞ്ഞെടുത്തു, ഏത് മെഷീൻ ഉറവിടം സ്വന്തമാക്കുന്നു, കൈമാറ്റം എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് രേഖപ്പെടുത്തൂ. ആ കുറിപ്പ് അടുത്ത ഓൺബോർഡിംഗിനെയോ ലാപ്ടോപ്പ് മാറ്റത്തെയോ അന്വേഷണത്തിന് പകരം ക്രമീകരണ ജോലിയാക്കി മാറ്റുന്നു.