$lang['tuto'] = "ട്യൂട്ടോറിയലുകൾ"; ?>$lang['tuto'] = "ട്യൂട്ടോറിയലുകൾ"; ?> ബ്ലോബുകൾ സ്ട്രിപ്പ്

ബ്ലോബുകൾ സ്ട്രിപ്പ് ചെയ്യാൻ ജിറ്റ് ഫിൽട്ടർ-റെപ്പോ എങ്ങനെ ഉപയോഗിക്കാം

Temp mail SuperHeros
ബ്ലോബുകൾ സ്ട്രിപ്പ് ചെയ്യാൻ ജിറ്റ് ഫിൽട്ടർ-റെപ്പോ എങ്ങനെ ഉപയോഗിക്കാം
ബ്ലോബുകൾ സ്ട്രിപ്പ് ചെയ്യാൻ ജിറ്റ് ഫിൽട്ടർ-റെപ്പോ എങ്ങനെ ഉപയോഗിക്കാം

Git-ൽ ബ്ലോബ് സ്ട്രിപ്പിംഗ് മനസ്സിലാക്കുന്നു

Git-ൽ, വലിയ ഫയലുകൾ കൈകാര്യം ചെയ്യുന്നത് ഒരു വെല്ലുവിളിയാണ്, പ്രത്യേകിച്ചും പ്രവർത്തിക്കുന്ന പകർപ്പിൽ അവ ആവശ്യമില്ലാത്തപ്പോൾ. നിങ്ങളുടെ റിപ്പോസിറ്ററിയുടെ ചരിത്രത്തിൽ നിന്ന് ഈ വലിയ ഫയലുകൾ നീക്കം ചെയ്യുന്നതിനുള്ള പരിഹാരങ്ങൾ BFG, Git Filter-Repo പോലുള്ള ടൂളുകൾ വാഗ്ദാനം ചെയ്യുന്നു. എന്നിരുന്നാലും, BFG-യുടെ അതേ ഫലങ്ങൾ Git Filter-Repo-ലൂടെ നേടുന്നത് ബുദ്ധിമുട്ടുള്ള കാര്യമാണ്.

BFG കമാൻഡ് എങ്ങനെ പകർത്താമെന്ന് ഈ ലേഖനം പര്യവേക്ഷണം ചെയ്യുന്നു --സ്ട്രിപ്പ്-ബ്ലോബ്സ്-ബിഗർ-ഇതിനേക്കാൾ Git ഫിൽട്ടർ-റെപ്പോ ഉപയോഗിച്ച്. ഞങ്ങൾ പൊതുവായ പ്രശ്നങ്ങൾ പരിഹരിക്കുകയും ഇപ്പോഴും ഉപയോഗത്തിലുള്ള ഫയലുകൾ ആകസ്മികമായി നീക്കം ചെയ്യാതെ തന്നെ നിങ്ങളുടെ ശേഖരം ഫലപ്രദമായി വൃത്തിയാക്കാൻ കഴിയുമെന്ന് ഉറപ്പാക്കാൻ ഒരു ഘട്ടം ഘട്ടമായുള്ള ഗൈഡ് നൽകുകയും ചെയ്യും.

കമാൻഡ് വിവരണം
from git import Repo Git റിപ്പോസിറ്ററിയുമായി സംവദിക്കാൻ GitPython ലൈബ്രറിയുടെ Repo ക്ലാസ് ഇറക്കുമതി ചെയ്യുന്നു.
git_filter_repo import RepoFilter റിപ്പോസിറ്ററി ബ്ലോബുകൾ ഫിൽട്ടർ ചെയ്യുന്നതിനായി git-filter-repo-ൽ നിന്ന് RepoFilter ക്ലാസ് ഇറക്കുമതി ചെയ്യുന്നു.
repo = Repo(repo_path) നിർദ്ദിഷ്‌ട റിപ്പോസിറ്ററി പാതയിലേക്ക് വിരൽ ചൂണ്ടുന്ന ഒരു റിപ്പോ ഒബ്‌ജക്റ്റ് ആരംഭിക്കുന്നു.
RepoFilter(repo).filter_blobs(filter_large_blobs) റിപ്പോസിറ്ററിയിൽ നിന്ന് വലിയ ബ്ലോബുകൾ നീക്കംചെയ്യുന്നതിന് ഒരു ഇഷ്‌ടാനുസൃത ഫിൽട്ടർ ഫംഗ്‌ഷൻ പ്രയോഗിക്കുന്നു.
git rev-list --objects --all ബ്ലോബുകൾ, മരങ്ങൾ, കമ്മിറ്റുകൾ എന്നിവയുൾപ്പെടെ റിപ്പോസിറ്ററിയിലെ എല്ലാ വസ്തുക്കളും ലിസ്റ്റുചെയ്യുന്നു.
git cat-file --batch-check വസ്‌തുക്കളുടെ വലിപ്പം ഉൾപ്പെടെയുള്ള വിശദമായ വിവരങ്ങൾ നൽകുന്നു.
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT തിരിച്ചറിഞ്ഞ ഓരോ വലിയ ബ്ലോബിനും git ഫിൽറ്റർ-റെപ്പോ കമാൻഡ് പ്രയോഗിക്കാൻ xargs ഉപയോഗിക്കുന്നു.

നൽകിയിരിക്കുന്ന സ്ക്രിപ്റ്റുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു

Git റിപ്പോസിറ്ററിയുമായി സംവദിക്കാൻ പൈത്തൺ സ്ക്രിപ്റ്റ് GitPython ലൈബ്രറി ഉപയോഗിക്കുന്നു. ഉപയോഗിച്ച് റിപ്പോസിറ്ററി ആരംഭിക്കുന്നു from git import Repo ഒപ്പം repo = Repo(repo_path), നിർദ്ദിഷ്ട റിപ്പോസിറ്ററി പാതയിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്നു. സ്ക്രിപ്റ്റ് പിന്നീട് ഒരു ഫിൽട്ടർ ഫംഗ്ഷൻ നിർവചിക്കുന്നു filter_large_blobs(blob) 10MB-യിൽ കൂടുതലുള്ള ബ്ലോബുകൾ തിരിച്ചറിയാൻ. ഉപയോഗിച്ചാണ് ഈ ഫിൽട്ടർ പ്രയോഗിക്കുന്നത് RepoFilter(repo).filter_blobs(filter_large_blobs), ഇത് വലുപ്പ പരിധി കവിയുന്ന ബ്ലോബുകൾ റിപ്പോസിറ്ററിയുടെ ചരിത്രത്തിൽ നിന്ന് നീക്കം ചെയ്യപ്പെടുന്നുവെന്ന് ഉറപ്പാക്കുന്നു.

Git കമാൻഡുകളും ഷെൽ യൂട്ടിലിറ്റികളും ഉപയോഗിച്ച് ഷെൽ സ്ക്രിപ്റ്റ് സമാനമായ ലക്ഷ്യം കൈവരിക്കുന്നു. ഇത് ഉപയോഗിച്ച് റിപ്പോസിറ്ററി ഡയറക്ടറിയിലേക്ക് നാവിഗേറ്റ് ചെയ്യുന്നു cd $REPO_PATH ഉപയോഗിക്കുന്ന എല്ലാ വസ്തുക്കളെയും ലിസ്റ്റുചെയ്യുകയും ചെയ്യുന്നു git rev-list --objects --all. ഓരോ വസ്തുവും അതിൻ്റെ വലുപ്പത്തിനായി പരിശോധിക്കുന്നു git cat-file --batch-check. നിർദ്ദിഷ്‌ട വലുപ്പ പരിധിയേക്കാൾ വലിയ വസ്തുക്കൾ ഉപയോഗിച്ച് ഫിൽട്ടർ ചെയ്യുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്യുന്നു xargs അപേക്ഷിക്കാൻ git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT തിരിച്ചറിഞ്ഞ ഓരോ വലിയ ബ്ലോബിനും. ഈ രീതി ശേഖരത്തിൽ നിന്ന് വലിയ ബ്ലോബുകൾ ഫലപ്രദമായി നീക്കംചെയ്യുന്നു, അനാവശ്യമായ വലിയ ഫയലുകൾ ഇല്ലാതെ ഒരു ക്ലീൻ ഹിസ്റ്ററി ഉറപ്പാക്കുന്നു.

Git Blobs വലുപ്പം അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യാൻ പൈത്തൺ ഉപയോഗിക്കുന്നു

വലിയ ബ്ലോബുകൾ ഫിൽട്ടർ ചെയ്യുന്നതിനുള്ള പൈത്തൺ സ്ക്രിപ്റ്റ്

# Import necessary modules
import os
from git import Repo
from git_filter_repo import RepoFilter

# Define the repository path and size limit
repo_path = 'path/to/your/repo'
size_limit = 10 * 1024 * 1024  # 10 MB

# Initialize the repository
repo = Repo(repo_path)

# Define a filter function to remove large blobs
def filter_large_blobs(blob):
    return blob.size > size_limit

# Apply the filter to the repository
RepoFilter(repo).filter_blobs(filter_large_blobs)

വലിയ Git Blobs തിരിച്ചറിയാനും നീക്കം ചെയ്യാനും Shell Script ഉപയോഗിക്കുന്നു

Git-ൽ ബ്ലോബ് മാനേജ്മെൻ്റിനുള്ള ഷെൽ സ്ക്രിപ്റ്റിംഗ്

#!/bin/bash

# Define repository path and size limit
REPO_PATH="path/to/your/repo"
SIZE_LIMIT=10485760  # 10 MB

# Navigate to the repository
cd $REPO_PATH

# List blobs larger than the size limit
git rev-list --objects --all |
git cat-file --batch-check='%(objectname) %(objecttype) %(objectsize) %(rest)' |
awk '$3 >= $SIZE_LIMIT {print $1}' |
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT

echo "Large blobs removed from the repository"

വിപുലമായ Git ഫിൽട്ടർ-റിപ്പോ ഓപ്ഷനുകൾ പര്യവേക്ഷണം ചെയ്യുന്നു

അതേസമയം git filter-repo --strip-blobs-bigger-than വലിയ ഫയലുകൾ നീക്കംചെയ്യുന്നതിന് ഫലപ്രദമാണ്, നിങ്ങളുടെ റിപ്പോസിറ്ററി ക്ലീനപ്പ് ഇഷ്‌ടാനുസൃതമാക്കുന്നതിന് അധിക ഓപ്ഷനുകൾ ഉണ്ട്. ഉദാഹരണത്തിന്, നിങ്ങൾക്ക് ഉപയോഗിക്കാം --path നിർദ്ദിഷ്ട ഫയലുകളിലേക്കോ ഡയറക്ടറികളിലേക്കോ പ്രവർത്തനം പരിമിതപ്പെടുത്താൻ. ബ്ലബ് നീക്കം ചെയ്യുന്നതിനായി നിങ്ങളുടെ ശേഖരത്തിൻ്റെ ചില ഭാഗങ്ങൾ മാത്രം ടാർഗറ്റ് ചെയ്യാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു. മറ്റൊരു ഉപയോഗപ്രദമായ ഓപ്ഷൻ --invert-paths, ഇത് പ്രവർത്തനത്തിൽ നിന്ന് നിർദ്ദിഷ്‌ട പാതകളെ ഒഴിവാക്കുന്നു, ഏതൊക്കെ ഫയലുകൾ സ്പർശിക്കാതെ തുടരുന്നു എന്നതിൽ കൂടുതൽ നിയന്ത്രണം വാഗ്ദാനം ചെയ്യുന്നു.

കൂടാതെ, നിങ്ങൾക്ക് സംയോജിപ്പിക്കാൻ കഴിയും --strip-blobs-bigger-than കൂടെ --analyze മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന് മുമ്പ് അവ പ്രിവ്യൂ ചെയ്യാൻ. എന്തെല്ലാം നീക്കം ചെയ്യും എന്നതിൻ്റെ വിശദമായ റിപ്പോർട്ട് നൽകിക്കൊണ്ട് മനഃപൂർവമല്ലാത്ത ഇല്ലാതാക്കലുകൾ ഒഴിവാക്കാൻ ഇത് സഹായിക്കുന്നു. ഈ വിപുലമായ ഓപ്‌ഷനുകൾ ഉപയോഗിക്കുന്നത് നിങ്ങളുടെ റിപ്പോസിറ്ററി മെയിൻ്റനൻസ് ടാസ്‌ക്കുകളുടെ വഴക്കവും കൃത്യതയും വർദ്ധിപ്പിക്കുകയും വൃത്തിയുള്ളതും കൂടുതൽ കാര്യക്ഷമവുമായ പ്രോജക്റ്റ് ചരിത്രം ഉറപ്പാക്കുകയും ചെയ്യും.

Git Filter-Repo-യെക്കുറിച്ചുള്ള പതിവ് ചോദ്യങ്ങൾ

  1. എന്താണ് ചെയ്യുന്നത് git filter-repo --strip-blobs-bigger-than ചെയ്യണോ?
  2. ഇത് റിപ്പോസിറ്ററി ചരിത്രത്തിൽ നിന്ന് നിർദ്ദിഷ്‌ട വലുപ്പത്തേക്കാൾ വലിയ ബ്ലോബുകൾ നീക്കംചെയ്യുന്നു.
  3. എങ്ങിനെയാണ് --invert-paths ജോലി?
  4. ഫിൽട്ടർ പ്രോസസ്സ് ചെയ്യുന്നതിൽ നിന്ന് നിർദ്ദിഷ്ട പാതകളെ ഇത് ഒഴിവാക്കുന്നു.
  5. മാറ്റങ്ങൾ പ്രയോഗിക്കുന്നതിന് മുമ്പ് എനിക്ക് പ്രിവ്യൂ ചെയ്യാൻ കഴിയുമോ?
  6. അതെ, ഉപയോഗിക്കുന്നു --analyze മാറ്റങ്ങളുടെ വിശദമായ റിപ്പോർട്ട് നൽകുന്നു.
  7. നിർദ്ദിഷ്‌ട ഫയലുകളോ ഡയറക്‌ടറികളോ ഞാൻ എങ്ങനെയാണ് ലക്ഷ്യമിടുന്നത്?
  8. ഉപയോഗിക്കുക --path നിർദ്ദിഷ്ട പാതകളിലേക്ക് പ്രവർത്തനങ്ങൾ പരിമിതപ്പെടുത്താനുള്ള ഓപ്ഷൻ.
  9. എന്താണ് ഉദ്ദേശ്യം RepoFilter പൈത്തണിലെ ക്ലാസ്?
  10. റിപ്പോസിറ്ററിയിലേക്ക് ഇഷ്‌ടാനുസൃത ഫിൽട്ടറുകൾ പ്രയോഗിക്കാൻ ഇത് അനുവദിക്കുന്നു.
  11. വരുത്തിയ മാറ്റങ്ങൾ പഴയപടിയാക്കാൻ എന്തെങ്കിലും വഴിയുണ്ടോ git filter-repo?
  12. മാറ്റങ്ങൾ ഒരിക്കൽ പ്രയോഗിച്ചാൽ, അവ എളുപ്പത്തിൽ പഴയപടിയാക്കാനാകില്ല. എല്ലായ്‌പ്പോഴും ആദ്യം നിങ്ങളുടെ ശേഖരം ബാക്കപ്പ് ചെയ്യുക.
  13. എന്താണ് ചെയ്യുന്നത് git rev-list --objects --all ചെയ്യണോ?
  14. ബ്ലോബുകൾ, മരങ്ങൾ, കമ്മിറ്റുകൾ എന്നിവയുൾപ്പെടെ റിപ്പോസിറ്ററിയിലെ എല്ലാ വസ്തുക്കളെയും ഇത് പട്ടികപ്പെടുത്തുന്നു.
  15. എന്തിനാണ് ഉപയോഗിക്കുന്നത് xargs കൂടെ git filter-repo?
  16. xargs നീക്കം ചെയ്യുന്നതിനായി തിരിച്ചറിഞ്ഞ വലിയ ബ്ലോബുകൾ പോലുള്ള ഇനങ്ങളുടെ ഒരു ലിസ്റ്റിലേക്ക് കമാൻഡുകൾ പ്രയോഗിക്കാൻ സഹായിക്കുന്നു.

Git Blob മാനേജ്മെൻ്റിനെക്കുറിച്ചുള്ള അന്തിമ ചിന്തകൾ

പ്രകടനവും സംഭരണവും ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിന് Git റിപ്പോസിറ്ററിയിൽ വലിയ ഫയലുകൾ ഫലപ്രദമായി കൈകാര്യം ചെയ്യേണ്ടത് അത്യാവശ്യമാണ്. ഓരോന്നിനും തനതായ കമാൻഡുകളും രീതികളും ഉണ്ടെങ്കിലും BFG, Git Filter-Repo പോലുള്ള ടൂളുകൾ ഉപയോഗിക്കുന്നത് ഈ പ്രക്രിയ കാര്യക്ഷമമാക്കാൻ സഹായിക്കുന്നു. വിപുലമായ ഓപ്‌ഷനുകൾ ഉപയോഗിക്കുന്നതിലൂടെയും ഓരോ ഉപകരണത്തിൻ്റെയും സൂക്ഷ്മത മനസ്സിലാക്കുന്നതിലൂടെയും, നിങ്ങളുടെ ശേഖരം ശുദ്ധവും കാര്യക്ഷമവുമാണെന്ന് ഉറപ്പാക്കാൻ കഴിയും. ഡാറ്റ നഷ്‌ടപ്പെടാതിരിക്കാൻ കാര്യമായ മാറ്റങ്ങൾ വരുത്തുന്നതിന് മുമ്പ് നിങ്ങളുടെ റിപ്പോസിറ്ററി ബാക്കപ്പ് ചെയ്യാൻ എപ്പോഴും ഓർക്കുക. ഈ ടൂളുകളെക്കുറിച്ചുള്ള അറിവ് തന്ത്രപരമായ ആസൂത്രണവുമായി സംയോജിപ്പിക്കുന്നത് നിങ്ങളുടെ പതിപ്പ് നിയന്ത്രണ രീതികളെ ഗണ്യമായി വർദ്ധിപ്പിക്കും.