ക്ലോണിംഗ് ഉപഡയറക്ടറികൾ: ഒരു ദ്രുത അവലോകനം
Git ഉപയോഗിച്ച് പതിപ്പ് നിയന്ത്രണം കൈകാര്യം ചെയ്യുമ്പോൾ, SVN പോലുള്ള പഴയ സിസ്റ്റങ്ങളെ അപേക്ഷിച്ച് വ്യത്യസ്ത സാഹചര്യങ്ങൾക്ക് വ്യത്യസ്ത സമീപനങ്ങൾ ആവശ്യമാണ്. പ്രത്യേകിച്ചും, ഒരു ശേഖരണത്തിൻ്റെ ഉപഡയറക്ടറികൾ തിരഞ്ഞെടുത്ത് ക്ലോൺ ചെയ്യാനുള്ള കഴിവ് വിവിധ വികസന വർക്ക്ഫ്ലോകൾക്ക് നിർണായകമാണ്. പ്രോജക്റ്റ് ഘടനകൾ സങ്കീർണ്ണമാകുമ്പോഴോ ഒരു ശേഖരത്തിൻ്റെ ഒരു ഭാഗം മാത്രം ഉപയോഗിച്ച് പ്രവർത്തിക്കേണ്ടിവരുമ്പോഴോ ഈ സവിശേഷത പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.
SVN-ൽ, ഒരു റിപ്പോസിറ്ററിയിൽ നിന്ന് വിവിധ സ്ഥലങ്ങളിലേക്ക് ഉപഡയറക്ടറികൾ ചെക്ക്ഔട്ട് ചെയ്യുന്നത് നേരായ കാര്യമായിരുന്നു. എന്നിരുന്നാലും, 'svn co' പോലെയുള്ള SVN കമാൻഡുകൾക്ക് നേരിട്ടുള്ള തത്തുല്യമായതിനാൽ Git റിപ്പോസിറ്ററി ഡാറ്റ വ്യത്യസ്തമായി കൈകാര്യം ചെയ്യുന്നു. വിരളമായ ചെക്ക്ഔട്ടും മറ്റ് തന്ത്രങ്ങളും ഉപയോഗിച്ച് Git-ന് സമാനമായ ഫലങ്ങൾ എങ്ങനെ നേടാനാകുമെന്ന് ഈ ഗൈഡ് പര്യവേക്ഷണം ചെയ്യും.
| കമാൻഡ് | വിവരണം |
|---|---|
| git init | ഒരു പുതിയ Git റിപ്പോസിറ്ററി ആരംഭിക്കുന്നു, ആവശ്യമായ എല്ലാ മെറ്റാഡാറ്റയും ഉപയോഗിച്ച് പ്രാരംഭ .git ഡയറക്ടറി സൃഷ്ടിക്കുന്നു. |
| git remote add -f | നിങ്ങളുടെ Git കോൺഫിഗറേഷനിലേക്ക് ഒരു പുതിയ റിമോട്ട് റിപ്പോസിറ്ററി ചേർക്കുകയും അത് ഉടൻ ലഭ്യമാക്കുകയും ചെയ്യുന്നു. |
| git config core.sparseCheckout true | ഒരു റിപ്പോസിറ്ററിയുടെ ഭാഗിക ചെക്ക്ഔട്ട് അനുവദിക്കുന്ന വിരളമായ ചെക്ക്ഔട്ട് ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുന്നു. |
| echo "finisht/*" >> .git/info/sparse-checkout | ഏത് ഉപഡയറക്ടറിയാണ് ചെക്ക് ഔട്ട് ചെയ്യേണ്ടതെന്ന് നിർവചിക്കുന്നതിന് സ്പാർസ്-ചെക്കൗട്ട് കോൺഫിഗറേഷൻ ഫയലിലേക്ക് 'ഫിനിഷ്റ്റ്/*' പാത്ത് കൂട്ടിച്ചേർക്കുന്നു. |
| git pull origin master | നിർദ്ദിഷ്ട ഉപഡയറക്ടറികൾ മാത്രം വീണ്ടെടുക്കാൻ സ്പാർസ്-ചെക്കൗട്ട് നിയമങ്ങൾ ഉപയോഗിച്ച് 'ഒറിജിൻ' റിമോട്ടിൽ നിന്ന് 'മാസ്റ്റർ' ബ്രാഞ്ച് വലിക്കുന്നു. |
| git sparse-checkout set | പ്രവർത്തന ഡയറക്ടറിക്കുള്ളിൽ പോപ്പുലേറ്റ് ചെയ്യേണ്ട പാതകൾ കോൺഫിഗർ ചെയ്യുന്നു. |
Git സ്പേസ് ചെക്ക്ഔട്ടും സ്ക്രിപ്റ്റ് വർക്ക്ഫ്ലോയും വിശദീകരിക്കുന്നു
നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകൾ ഒരു Git റിപ്പോസിറ്ററിയിൽ നിന്ന് പ്രത്യേക സബ്ഡയറക്ടറികൾ ക്ലോൺ ചെയ്യുന്നതിനായി രൂപകൽപ്പന ചെയ്തിരിക്കുന്നു, ഇത് മുമ്പ് SVN-ൽ ലഭ്യമായ രീതിയെ അനുകരിക്കുന്നു. ഒരു റിപ്പോസിറ്ററിയുടെ ചില ഭാഗങ്ങൾ മാത്രം ആവശ്യമുള്ള പരിതസ്ഥിതികളിൽ, ഇത് ലഭ്യമാക്കുന്ന ഡാറ്റ ഗണ്യമായി കുറയ്ക്കുകയും കാര്യക്ഷമത മെച്ചപ്പെടുത്തുകയും ചെയ്യും. ആദ്യ സ്ക്രിപ്റ്റ് ഒരു കോമ്പിനേഷൻ ഉപയോഗിക്കുന്നു git init, git remote add -f, ഒപ്പം git config core.sparseCheckout true ഒരു പുതിയ Git റിപ്പോസിറ്ററി ആരംഭിക്കുന്നതിനും ഒരു വിദൂര ഉറവിടം ചേർക്കുകയും റിപ്പോസിറ്ററി ഉള്ളടക്കങ്ങളുടെ തിരഞ്ഞെടുത്ത ക്ലോണിംഗ് അനുവദിക്കുന്ന വിരളമായ ചെക്ക്ഔട്ട് പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യുക.
തുടർന്ന്, 'ഫിനിഷ്റ്റ്/*' പോലുള്ള പാതകൾ സ്പാർസ്-ചെക്കൗട്ട് കോൺഫിഗറേഷനിലേക്ക് ചേർക്കുന്നു echo കമാൻഡുകൾ, ആ നിർദ്ദിഷ്ട ഡയറക്ടറികൾ മാത്രം ലഭ്യമാക്കാൻ Git-നെ നിർദ്ദേശിക്കുന്നു. ആജ്ഞ git pull origin master റിമോട്ട് റിപ്പോസിറ്ററിയുടെ മാസ്റ്റർ ബ്രാഞ്ചിൽ നിന്ന് കോൺഫിഗർ ചെയ്ത ഉപഡയറക്ടറികൾ മാത്രം പിൻവലിക്കാൻ ഉപയോഗിക്കുന്നു. രണ്ടാമത്തെ സ്ക്രിപ്റ്റ് സ്വാധീനിക്കുന്നു git sparse-checkout set കമാൻഡ്, ഡയറക്ടറി പാത്തുകൾ നേരിട്ട് വ്യക്തമാക്കുന്നതും പരിശോധിച്ചതിൻ്റെ വ്യക്തതയും നിയന്ത്രണവും വർദ്ധിപ്പിക്കുന്നതുമായ സമീപകാല Git പതിപ്പുകളിൽ അവതരിപ്പിച്ച കൂടുതൽ കാര്യക്ഷമമായ സമീപനം.
Git റിപ്പോസിറ്ററികളിൽ ക്ലോണിംഗിനായി ഉപഡയറക്ടറികൾ വേർതിരിച്ചെടുക്കുന്നു
ബാഷ്, ജിറ്റ് കമാൻഡുകൾ ഉപയോഗിക്കുന്നു
mkdir specific-dir-clonecd specific-dir-clonegit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "finisht/*" >> .git/info/sparse-checkoutgit pull origin mastercd ..mkdir another-specific-dircd another-specific-dirgit initgit remote add -f origin https://your-repository-url.gitgit config core.sparseCheckout trueecho "static/*" >> .git/info/sparse-checkoutgit pull origin master
Git-ൽ ഉപഡയറക്ടറികൾക്കായി സ്പേസ് ചെക്ക്ഔട്ട് നടപ്പിലാക്കുന്നു
Git സ്പാർസ്-ചെക്കൗട്ട് ഫീച്ചർ ഉപയോഗിക്കുന്നു
git clone --filter=blob:none --no-checkout https://your-repository-url.git repo-dircd repo-dirgit sparse-checkout init --conegit sparse-checkout set finishtgit checkoutcd ..git clone --filter=blob:none --no-checkout https://your-repository-url.git another-repo-dircd another-repo-dirgit sparse-checkout init --conegit sparse-checkout set staticgit checkout
ഡയറക്ടറി-നിർദ്ദിഷ്ട പ്രവർത്തനങ്ങൾക്കായി Git-ലെ നൂതന സാങ്കേതിക വിദ്യകൾ
Git-ലെ ഉപഡയറക്ടറികൾ ക്ലോണുചെയ്യുന്നതിനുള്ള അടിസ്ഥാന രീതികൾക്ക് പുറമേ, നിരവധി പ്രോജക്ടുകളുള്ള വലിയ ശേഖരണങ്ങൾ ഡവലപ്പർമാർ എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു എന്നതിനെ കൂടുതൽ ഒപ്റ്റിമൈസ് ചെയ്യാൻ കഴിയുന്ന നൂതന സാങ്കേതിക വിദ്യകളുണ്ട്. അത്തരം ഒരു രീതിയുടെ ഉപയോഗം ഉൾപ്പെടുന്നു git submodule. ഈ കമാൻഡ് ഒരു Git റിപ്പോസിറ്ററിയെ മറ്റ് Git റിപ്പോസിറ്ററികളെ സബ്മോഡ്യൂളുകളായി ഉൾപ്പെടുത്താൻ അനുവദിക്കുന്നു, അവ രക്ഷിതാവിനൊപ്പം ക്ലോൺ ചെയ്യാനും പ്രത്യേകം പരിപാലിക്കാനും കഴിയും. ഒരു റിപ്പോസിറ്ററിയുടെ വിവിധ ഭാഗങ്ങൾ വേർപെടുത്തേണ്ടതും എന്നാൽ ഒരു സെൻട്രൽ റിപ്പോസിറ്ററിയിൽ നിന്ന് നിയന്ത്രിക്കേണ്ടതും ആവശ്യമുള്ളപ്പോൾ ഇത് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.
ഉപയോഗമാണ് മറ്റൊരു വിപുലമായ സവിശേഷത git filter-branch സംയോജിച്ച git subtree. ഈ കോമ്പിനേഷൻ ഒരു ഉപഡയറക്ടറിയെ അതിൻ്റെ ചരിത്രം സംരക്ഷിച്ചുകൊണ്ട് പുതിയതും വേറിട്ടതുമായ Git റിപ്പോസിറ്ററിയിലേക്ക് എക്സ്ട്രാക്റ്റ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു. ഒരു പ്രോജക്റ്റ് അതിൻ്റേതായ അസ്തിത്വമായി വളരുകയും അതിൻ്റെ ചരിത്രപരമായ സന്ദർഭം നഷ്ടപ്പെടാതെ പ്രധാന ശേഖരത്തിൽ നിന്ന് വേർപെടുത്തുകയും ചെയ്യേണ്ട സാഹചര്യങ്ങൾക്ക് ഇത് അനുയോജ്യമാണ്.
അത്യാവശ്യമായ Git ഉപഡയറക്ടറി മാനേജ്മെൻ്റ് പതിവുചോദ്യങ്ങൾ
- ഒരു Git റിപ്പോസിറ്ററിയിൽ നിന്ന് എനിക്ക് ഒരു ഡയറക്ടറി മാത്രം ക്ലോൺ ചെയ്യാൻ കഴിയുമോ?
- അതെ, പോലുള്ള കമാൻഡുകൾ ഉപയോഗിക്കുന്നു git sparse-checkout അല്ലെങ്കിൽ ആ ഡയറക്ടറിയിലെ ഉള്ളടക്കങ്ങൾ ഉപയോഗിച്ച് ഒരു പ്രത്യേക ബ്രാഞ്ച് സൃഷ്ടിക്കുക.
- എന്താണ് Git-ൽ വിരളമായ ചെക്ക്ഔട്ട്?
- മുഴുവൻ പ്രോജക്റ്റും ഡൗൺലോഡ് ചെയ്യാതെ തന്നെ ഒരു ശേഖരത്തിൽ നിന്ന് ചില ഫോൾഡറുകളോ ഫയലുകളോ തിരഞ്ഞെടുത്ത് പരിശോധിക്കാൻ സ്പാർസ് ചെക്ക്ഔട്ട് നിങ്ങളെ അനുവദിക്കുന്നു.
- ഒരു ഉപഡയറക്ടറിക്കായി ഞാൻ എങ്ങനെയാണ് ഒരു സബ്മോഡ്യൂൾ ഉപയോഗിക്കുന്നത്?
- ഇതിനൊപ്പം സബ്മോഡ്യൂൾ ചേർക്കുക git submodule add ആവശ്യമുള്ള സംഭരണിയിലേക്കും പാതയിലേക്കും ചൂണ്ടിക്കാണിക്കുന്നു.
- എനിക്ക് ഒരു ഉപഡയറക്ടറിയെ ഒരു പുതിയ ശേഖരമായി വേർതിരിക്കാൻ കഴിയുമോ?
- അതെ, ഉപയോഗിക്കുന്നു git subtree split ഉപഡയറക്ടറിയുടെ ചരിത്രമുള്ള ഒരു പുതിയ ബ്രാഞ്ച് സൃഷ്ടിക്കാൻ, അത് പിന്നീട് ക്ലോൺ ചെയ്യാൻ കഴിയും.
- ജിറ്റ് സബ്മോഡ്യൂളും ജിറ്റ് സബ്ട്രീയും തമ്മിലുള്ള വ്യത്യാസം എന്താണ്?
- സബ്മോഡ്യൂളുകൾ നിങ്ങളുടെ പ്രോജക്റ്റിലേക്ക് പ്രത്യേക റിപ്പോസിറ്ററികളെ ഡിപൻഡൻസികളായി ലിങ്ക് ചെയ്യുന്നു, അതേസമയം സബ്ട്രീകൾ മറ്റൊരു ശേഖരണത്തെ നിങ്ങളുടെ പ്രോജക്റ്റിലേക്ക് തിരികെ വിഭജിക്കാനുള്ള കഴിവ് ലയിപ്പിക്കുന്നു.
Git-ലെ ഡയറക്ടറി-നിർദ്ദിഷ്ട ക്ലോണിംഗിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
വ്യക്തിഗത ഡയറക്ടറികൾക്കായി SVN-ൻ്റെ ചെക്ക്ഔട്ടിന് തുല്യമായ ഒരു ഡയറക്ട് കമാൻഡ് Git നൽകുന്നില്ലെങ്കിലും, വിരളമായ ചെക്ക്ഔട്ട്, സബ്മോഡ്യൂളുകൾ, സബ്ട്രീ സ്ട്രാറ്റജികൾ എന്നിവയുടെ ഉപയോഗം ശക്തമായ ബദലുകൾ വാഗ്ദാനം ചെയ്യുന്നു. ഈ രീതികൾ ആവർത്തിക്കുക മാത്രമല്ല, പഴയ പതിപ്പ് നിയന്ത്രണ സംവിധാനങ്ങൾ നൽകുന്ന പ്രവർത്തനക്ഷമത വർദ്ധിപ്പിക്കുകയും ചെയ്യുന്നു. SVN-ൽ നിന്ന് മാറുന്ന അല്ലെങ്കിൽ Git-നുള്ളിൽ സങ്കീർണ്ണമായ പ്രോജക്ടുകൾ കൈകാര്യം ചെയ്യുന്ന ഡെവലപ്പർമാർക്ക്, ഈ ടെക്നിക്കുകൾ മാസ്റ്റേഴ്സ് ചെയ്യുന്നത് അവരുടെ വികസന പ്രക്രിയയെ ഗണ്യമായി കാര്യക്ഷമമാക്കും.