അസൂർ റിപ്പോസിറ്ററി വലുപ്പ പരിധികൾ മറികടക്കുന്നു
Azure-ലേക്ക് ഒരു Git റിപ്പോസിറ്ററി മൈഗ്രേറ്റ് ചെയ്യുന്നത് ചിലപ്പോൾ വെല്ലുവിളികൾ നേരിടാം, പ്രത്യേകിച്ചും വലിയ റിപ്പോസിറ്ററി വലുപ്പങ്ങൾ കൈകാര്യം ചെയ്യുമ്പോൾ. ഒരു സാധാരണ പിശക്, "TF402462 വലിപ്പം 5120 MB-യിൽ കൂടുതലായതിനാൽ പുഷ് നിരസിക്കപ്പെട്ടു," അപ്രതീക്ഷിതമായി പ്രക്രിയ നിർത്താം. .git ഡയറക്ടറിയിലെ വലിപ്പം കൂടിയ ഫയലുകൾ അല്ലെങ്കിൽ ചരിത്രം കാരണം ഈ പ്രശ്നം പലപ്പോഴും ഉണ്ടാകാറുണ്ട്.
ഈ ലേഖനത്തിൽ, വലിയ ഫയലുകൾ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നതിനായി Git LFS (വലിയ ഫയൽ സംഭരണം) ഉപയോഗിക്കുന്നത് ഉൾപ്പെടെ, ഈ പ്രശ്നം പരിഹരിക്കുന്നതിനുള്ള ഘട്ടങ്ങൾ ഞങ്ങൾ പര്യവേക്ഷണം ചെയ്യും. കാരണങ്ങൾ മനസിലാക്കുകയും ശരിയായ പരിഹാരങ്ങൾ നടപ്പിലാക്കുകയും ചെയ്യുന്നതിലൂടെ, വലുപ്പ പരിധികൾ കവിയാതെ നിങ്ങളുടെ ശേഖരം അസ്യൂറിലേക്ക് വിജയകരമായി മൈഗ്രേറ്റ് ചെയ്യാൻ കഴിയും.
| കമാൻഡ് | വിവരണം |
|---|---|
| git lfs install | റിപ്പോസിറ്ററിയിൽ Git ലാർജ് ഫയൽ സ്റ്റോറേജ് (LFS) ആരംഭിക്കുന്നു. |
| git lfs track | Git LFS ഉപയോഗിച്ച് നിർദ്ദിഷ്ട ഫയൽ തരങ്ങൾ ട്രാക്കുചെയ്യുന്നു, റിപ്പോസിറ്ററി വലുപ്പത്തിൽ അവയുടെ സ്വാധീനം കുറയ്ക്കുന്നു. |
| git lfs migrate import | Git LFS നിയന്ത്രിക്കാൻ വലിയ ഫയലുകൾ ഇറക്കുമതി ചെയ്യുകയും മൈഗ്രേറ്റ് ചെയ്യുകയും ചെയ്യുന്നു. |
| git filter-repo | കമ്മിറ്റ് ചരിത്രത്തിൽ നിന്ന് വലിയ ഫയലുകൾ നീക്കം ചെയ്യുന്നതിനായി ശേഖരം ഫിൽട്ടർ ചെയ്യുന്നു. |
| git gc --prune=now | ശേഖരണ വലുപ്പം കുറയ്ക്കുന്നതിന് മാലിന്യങ്ങൾ അനാവശ്യ ഫയലുകൾ ശേഖരിക്കുകയും വെട്ടിമാറ്റുകയും ചെയ്യുന്നു. |
| git push --mirror | എല്ലാ റെഫറുകളും (ശാഖകൾ, ടാഗുകൾ) ഒരു ശേഖരത്തിൽ നിന്ന് മറ്റൊന്നിലേക്ക് തള്ളുന്നു. |
അസൂർ മൈഗ്രേഷനുള്ള സ്ക്രിപ്റ്റുകൾ മനസ്സിലാക്കുന്നു
നിങ്ങളുടെ റിപ്പോസിറ്ററിയിലെ വലിയ ഫയലുകൾ കൈകാര്യം ചെയ്യുന്നതിനായി Git LFS (വലിയ ഫയൽ സംഭരണം) ഉപയോഗിക്കുന്നതിൽ ആദ്യ സ്ക്രിപ്റ്റ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു. Git LFS ഉപയോഗിച്ച് ഇത് ആരംഭിക്കുന്നു git lfs install കമാൻഡ്. ഇതുപയോഗിച്ച് വലിയ ഫയലുകൾ ട്രാക്ക് ചെയ്യുന്നു git lfs track, ഇത് നിർദ്ദിഷ്ട ഫയൽ തരങ്ങൾ Git LFS നിയന്ത്രിക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. ട്രാക്കിംഗ് സജ്ജീകരിച്ച ശേഷം, സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു git lfs migrate import നിലവിലുള്ള വലിയ ഫയലുകൾ LFS-ലേക്ക് ഇറക്കുമതി ചെയ്യാൻ. ഈ പ്രക്രിയ റിപ്പോസിറ്ററിയുടെ വലുപ്പം കുറയ്ക്കാൻ സഹായിക്കുന്നു, ഇത് അസ്യൂറിലേക്ക് തള്ളുന്നത് എളുപ്പമാക്കുന്നു. അവസാനമായി, സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് മുഴുവൻ റിപ്പോസിറ്ററിയും തള്ളാൻ ശ്രമിക്കുന്നു git push --mirror കമാൻഡ്.
രണ്ടാമത്തെ സ്ക്രിപ്റ്റ് റിപ്പോസിറ്ററി വിശകലനം ചെയ്യുന്നതിനും വൃത്തിയാക്കുന്നതിനുമുള്ള പൈത്തൺ അധിഷ്ഠിത സമീപനമാണ്. റിപ്പോസിറ്ററിയെ പ്രാദേശികമായി ക്ലോൺ ചെയ്തുകൊണ്ടാണ് ഇത് ആരംഭിക്കുന്നത് subprocess.run(['git', 'clone', repo_url]) തുടർന്ന് റിപ്പോസിറ്ററി ഡയറക്ടറിയിലേക്ക് നാവിഗേറ്റ് ചെയ്യുന്നു. സ്ക്രിപ്റ്റ് ഉപയോഗിക്കുന്നു git filter-repo ചരിത്രത്തിൽ നിന്ന് വലിയ ഫയലുകൾ നീക്കംചെയ്യുന്നതിന്, തുടർന്ന് git gc --prune=now മാലിന്യങ്ങൾ ശേഖരിക്കാനും അനാവശ്യ ഫയലുകൾ വെട്ടിമാറ്റാനും. ഇത് റിപ്പോസിറ്ററി വലുപ്പം ഗണ്യമായി കുറയ്ക്കുന്നു. അവസാനമായി, വൃത്തിയാക്കിയ ശേഖരം അസ്യൂറിലേക്ക് തള്ളുന്നു subprocess.run(['git', 'push', '--mirror', 'azure-remote-url']). അസൂർ ഏർപ്പെടുത്തിയിരിക്കുന്ന വലിപ്പ പരിധിക്കുള്ളിൽ ശേഖരം നിലകൊള്ളുന്നുവെന്ന് ഈ ഘട്ടങ്ങൾ ഉറപ്പാക്കുന്നു.
അസൂർ മൈഗ്രേഷനായി വലിയ ഫയലുകൾ കൈകാര്യം ചെയ്യാൻ Git LFS ഉപയോഗിക്കുന്നു
ഫയൽ മൈഗ്രേഷനുള്ള Git Bash സ്ക്രിപ്റ്റ്
# Step 1: Initialize Git LFSgit lfs install# Step 2: Track specific large file typesgit lfs track "*.zip" "*.a" "*.tar" "*.dll" "*.lib" "*.xz" "*.bz2" "*.exe" "*.ttf" "*.ttc" "*.db" "*.mp4" "*.tgz" "*.pdf" "*.dcm" "*.so" "*.pdb" "*.msi" "*.jar" "*.bin" "*.sqlite"# Step 3: Add .gitattributes filegit add .gitattributesgit commit -m "Track large files using Git LFS"# Step 4: Migrate existing large files to Git LFSgit lfs migrate import --include="*.zip,*.a,*.tar,*.dll,*.lib,*.xz,*.bz2,*.exe,*.ttf,*.ttc,*.db,*.mp4,*.tgz,*.pdf,*.dcm,*.so,*.pdb,*.msi,*.jar,*.bin,*.sqlite"# Step 5: Push the repository to Azuregit push --mirror
വിജയകരമായ അസൂർ മൈഗ്രേഷനായി റിപ്പോസിറ്ററി വലുപ്പം കുറയ്ക്കുന്നു
പൈത്തൺ സ്ക്രിപ്റ്റ് വിശകലനം ചെയ്യാനും ശേഖരം വൃത്തിയാക്കാനും
import osimport subprocess# Step 1: Clone the repository locallyrepo_url = 'your-repo-url'subprocess.run(['git', 'clone', repo_url])# Step 2: Change directory to the cloned reporepo_name = 'your-repo-name'os.chdir(repo_name)# Step 3: Remove large files from historysubprocess.run(['git', 'filter-repo', '--path-glob', '*.zip', '--path-glob', '*.tar', '--path-glob', '*.dll', '--path-glob', '*.mp4', '--strip-blobs-bigger-than', '10M'])# Step 4: Garbage collect to reduce repo sizesubprocess.run(['git', 'gc', '--prune=now'])# Step 5: Push the cleaned repository to Azuresubprocess.run(['git', 'push', '--mirror', 'azure-remote-url'])
അസ്യൂറിലെ റിപ്പോസിറ്ററി സൈസ് പ്രശ്നങ്ങൾ പരിഹരിക്കുന്നു
വലിയ Git റിപ്പോസിറ്ററികൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള മറ്റൊരു പ്രധാന വശം ചരിത്രത്തിൻ്റെയും ഉപയോഗിക്കാത്ത ഫയലുകളുടെയും പരിഗണനയാണ്. കാലക്രമേണ, റിപ്പോസിറ്ററികൾ ചരിത്രപരമായ ഡാറ്റയുടെ ഗണ്യമായ അളവിൽ ശേഖരിക്കുന്നു, ഇത് വലുപ്പ പ്രശ്നത്തിന് കാരണമാകും. പോലുള്ള ഉപകരണങ്ങൾ git filter-repo ഒപ്പം git gc ഈ ഡാറ്റ വൃത്തിയാക്കാൻ സഹായിക്കുക. ദി git filter-repo വലിയ ഫയലുകളോ സെൻസിറ്റീവ് ഡാറ്റയോ നീക്കം ചെയ്യുന്നതിനായി ചരിത്രം തിരുത്തിയെഴുതുന്നതിന് കമാൻഡ് പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്, ശേഖരത്തിൻ്റെ കാൽപ്പാടുകൾ ഫലപ്രദമായി കുറയ്ക്കുന്നു.
കൂടാതെ, ദി git gc കമാൻഡ്, പ്രത്യേകിച്ചും കൂടെ ഉപയോഗിക്കുമ്പോൾ --prune=now തൂങ്ങിക്കിടക്കുന്ന കമിറ്റുകളും മറ്റ് എത്തിച്ചേരാനാകാത്ത വസ്തുക്കളും മാലിന്യങ്ങൾ ശേഖരിക്കുന്നതിനും നീക്കം ചെയ്യുന്നതിനും ഈ ഓപ്ഷൻ അത്യാവശ്യമാണ്. കൂടുതൽ കൈകാര്യം ചെയ്യാവുന്ന ശേഖരണ വലുപ്പം നിലനിർത്തിക്കൊണ്ട് ആവശ്യമായ ഡാറ്റ മാത്രം സൂക്ഷിക്കുന്നുവെന്ന് ഇത് ഉറപ്പാക്കുന്നു. ഈ കമാൻഡുകൾ ഉപയോഗിച്ചുള്ള പതിവ് അറ്റകുറ്റപ്പണികൾ, കൈകാര്യം ചെയ്യാവുന്ന പരിധിക്കപ്പുറം വളരുന്നതിൽ നിന്നും റിപ്പോസിറ്ററിയെ തടയുകയും സുഗമമായ മൈഗ്രേഷനും പ്രവർത്തനങ്ങളും സുഗമമാക്കുകയും ചെയ്യും.
Git ടു അസൂർ മൈഗ്രേഷനുള്ള പൊതുവായ ചോദ്യങ്ങളും പരിഹാരങ്ങളും
- "TF402462" എന്ന പിശക് എന്താണ് അർത്ഥമാക്കുന്നത്?
- റിപ്പോസിറ്ററി വലുപ്പം അസ്യൂർ ചുമത്തിയ 5120 MB പരിധി കവിഞ്ഞതിനാൽ പുഷ് നിരസിക്കപ്പെട്ടുവെന്ന് പിശക് സൂചിപ്പിക്കുന്നു.
- എൻ്റെ റിപ്പോസിറ്ററിയിലെ വലിയ ഫയലുകൾ എങ്ങനെ തിരിച്ചറിയാം?
- നിങ്ങൾക്ക് ഉപയോഗിക്കാം git rev-list --objects --all | sort -k 2 > allfiles.txt റിപ്പോസിറ്ററിയിലെ എല്ലാ ഫയലുകളും ലിസ്റ്റുചെയ്യാനും ഏറ്റവും വലിയവ തിരിച്ചറിയാനുമുള്ള കമാൻഡ്.
- എന്താണ് Git LFS, അത് എങ്ങനെ സഹായിക്കുന്നു?
- Git LFS (വലിയ ഫയൽ സംഭരണം) എന്നത് Git-നുള്ള ഒരു വിപുലീകരണമാണ്, അത് റിപ്പോസിറ്ററിയുടെ പ്രധാന ചരിത്രത്തിൽ നിന്ന് പ്രത്യേകമായി വലിയ ഫയലുകൾ കൈകാര്യം ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു, ഇത് മൊത്തത്തിലുള്ള റിപ്പോസിറ്ററി വലുപ്പം കുറയ്ക്കുന്നു.
- Git LFS ഉപയോഗിച്ച് ഞാൻ എങ്ങനെയാണ് വലിയ ഫയലുകൾ ട്രാക്ക് ചെയ്യുന്നത്?
- ഉപയോഗിക്കുക git lfs track കമാൻഡിന് ശേഷം നിങ്ങൾ നിയന്ത്രിക്കാൻ ആഗ്രഹിക്കുന്ന ഫയൽ തരങ്ങൾ git lfs track "*.zip" "*.tar".
- Git LFS ഉപയോഗിച്ച് ഫയലുകൾ ട്രാക്ക് ചെയ്തതിന് ശേഷം ഞാൻ എന്ത് നടപടികളാണ് സ്വീകരിക്കേണ്ടത്?
- ട്രാക്ക് ചെയ്ത ശേഷം, നിങ്ങൾ മാറ്റങ്ങൾ വരുത്തി പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട് git lfs migrate import നിലവിലുള്ള വലിയ ഫയലുകൾ LFS-ലേക്ക് നീക്കാൻ.
- എൻ്റെ ശേഖരത്തിൻ്റെ ചരിത്രം എങ്ങനെ വൃത്തിയാക്കാം?
- ഉപയോഗിക്കുക git filter-repo നിങ്ങളുടെ റിപ്പോസിറ്ററി ചരിത്രത്തിൽ നിന്ന് ആവശ്യമില്ലാത്ത ഫയലുകൾ നീക്കം ചെയ്യാനും അതിൻ്റെ വലിപ്പം കുറയ്ക്കാനുമുള്ള കമാൻഡ്.
- എന്താണ് പങ്ക് git gc ശേഖരണ വലുപ്പം നിലനിർത്തുന്നതിൽ?
- ദി git gc കമാൻഡ് ആവശ്യമില്ലാത്ത ഫയലുകൾ വൃത്തിയാക്കുകയും റിപ്പോസിറ്ററി ഒപ്റ്റിമൈസ് ചെയ്യുകയും ചെയ്യുന്നു, ഇത് വലുപ്പം നിയന്ത്രിക്കുന്നതിന് നിർണായകമാണ്.
- എൻ്റെ റിപ്പോസിറ്ററിയിൽ എത്ര തവണ ഞാൻ മെയിൻ്റനൻസ് കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കണം?
- പതിവായി, പ്രത്യേകിച്ച് കാര്യമായ മാറ്റങ്ങൾ അല്ലെങ്കിൽ മൈഗ്രേഷനുകൾക്ക് മുമ്പും ശേഷവും, ശേഖരം വലുപ്പ പരിധിക്കുള്ളിൽ തന്നെ തുടരുന്നുവെന്ന് ഉറപ്പാക്കാൻ.
റിപ്പോസിറ്ററി സൈസ് മാനേജ്മെൻ്റിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ
വലിയ Git റിപ്പോസിറ്ററികൾ ഫലപ്രദമായി കൈകാര്യം ചെയ്യുന്നത് Azure-ലേക്കുള്ള വിജയകരമായ കുടിയേറ്റത്തിന് നിർണായകമാണ്, പ്രത്യേകിച്ച് വലുപ്പ പരിധികൾ കൈകാര്യം ചെയ്യുമ്പോൾ. വലിയ ഫയലുകൾ ട്രാക്ക് ചെയ്യാനും നിയന്ത്രിക്കാനും Git LFS പോലുള്ള ടൂളുകൾ ഉപയോഗിക്കുന്നത് റിപ്പോസിറ്ററി വലുപ്പം ഗണ്യമായി കുറയ്ക്കും. കൂടാതെ, git ഫിൽട്ടർ-റിപ്പോ പോലുള്ള കമാൻഡുകൾ ഉപയോഗിച്ച് ചരിത്രം വൃത്തിയാക്കുന്നതും git gc ഉപയോഗിച്ചുള്ള പതിവ് അറ്റകുറ്റപ്പണികളും നിങ്ങളുടെ റിപ്പോസിറ്ററി ഒപ്റ്റിമൈസ് ചെയ്യാനും വലുപ്പ പരിധിക്കുള്ളിൽ നിലനിർത്താനും കഴിയും. ഈ തന്ത്രങ്ങൾ ഉപയോഗിച്ച്, നിങ്ങൾക്ക് TF402462 പിശക് മറികടക്കാനും സുഗമമായ മൈഗ്രേഷൻ പ്രക്രിയ ഉറപ്പാക്കാനും കഴിയും.