Blob Strippingin ymmärtäminen Gitissä
Gitissä suurten tiedostojen hallinta voi olla haaste, varsinkin kun niitä ei enää tarvita työkopiossa. Työkalut, kuten BFG ja Git Filter-Repo, tarjoavat ratkaisuja näiden suurten tiedostojen poistamiseen arkiston historiasta. Kuitenkin samojen tulosten saavuttaminen Git Filter-Repolla kuin BFG:llä voi olla hankalaa.
Tässä artikkelissa tarkastellaan, kuinka BFG-komento kopioidaan --kaistale-pilkkuja-isompi kuin käyttämällä Git Filter-Repoa. Käsittelemme yleisiä ongelmia ja tarjoamme vaiheittaisen oppaan varmistaaksesi, että voit puhdistaa arkistosi tehokkaasti poistamatta vahingossa käytössä olevia tiedostoja.
Komento | Kuvaus |
---|---|
from git import Repo | Tuo GitPython-kirjaston Repo-luokan ollakseen vuorovaikutuksessa Git-arkiston kanssa. |
git_filter_repo import RepoFilter | Tuo RepoFilter-luokan git-filter-reposta arkiston blobien suodattamiseksi. |
repo = Repo(repo_path) | Alustaa Repo-objektin, joka osoittaa määritettyyn arkistopolkuun. |
RepoFilter(repo).filter_blobs(filter_large_blobs) | Käyttää mukautettua suodatintoimintoa suurten blobin poistamiseksi arkistosta. |
git rev-list --objects --all | Luetteloi kaikki arkiston objektit, mukaan lukien blobit, puut ja sitoumukset. |
git cat-file --batch-check | Tarjoaa yksityiskohtaista tietoa kohteista, mukaan lukien niiden koosta. |
xargs -n 1 git filter-repo --strip-blobs-bigger-than $SIZE_LIMIT | Käyttää xargs-komentoa git filter-repo -komennon soveltamiseen jokaiseen tunnistettuun suureen blobiin. |
Toimitetut komentosarjat toimivat
Python-skripti käyttää GitPython-kirjastoa vuorovaikutuksessa Git-arkiston kanssa. Arkisto alustetaan käyttämällä ja , joka osoittaa määritettyyn arkistopolkuun. Skripti määrittää sitten suodatustoiminnon tunnistaa yli 10 megatavun kokoiset blobit. Tätä suodatinta käytetään käyttämällä RepoFilter(repo).filter_blobs(filter_large_blobs), joka varmistaa, että kokorajoituksen ylittävät blobit poistetaan arkiston historiasta.
Shell-skripti saavuttaa samanlaisen tavoitteen käyttämällä Git-komentoja ja shell-apuohjelmia. Se siirtyy arkistohakemistoon painikkeella ja luettelee kaikki objektit, jotka käyttävät . Jokaisen kohteen koko tarkistetaan . Määritettyä kokorajoitusta suuremmat objektit suodatetaan ja käsitellään käyttämällä xargs hakea jokaiseen tunnistettuun suureen möykkyyn. Tämä menetelmä poistaa tehokkaasti suuret blobit arkistosta ja varmistaa puhtaan historian ilman tarpeettomia suuria tiedostoja.
Pythonin käyttäminen Git Blobsien suodattamiseen koon mukaan
Python-skripti suurten blobin suodattamiseen
# 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)
Shell-skriptin käyttäminen suurten git-blobien tunnistamiseen ja poistamiseen
Shell-skripti blob-hallintaan Gitissä
#!/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"
Tarkennettujen Git Filter-Repo -vaihtoehtojen tutkiminen
Sillä aikaa on tehokas suurten tiedostojen poistamiseen, on lisävaihtoehtoja arkiston siivouksen mukauttamiseen. Voit esimerkiksi käyttää rajoittaaksesi toiminnan tiettyihin tiedostoihin tai hakemistoihin. Tämän avulla voit kohdistaa vain tietyille arkiston alueille blob-poistoa varten. Toinen hyödyllinen vaihtoehto on , joka sulkee tietyt polut pois toiminnasta ja tarjoaa paremman hallinnan siihen, mitkä tiedostot pysyvät koskemattomina.
Lisäksi voit yhdistää kanssa esikatsella muutoksia ennen niiden käyttöönottoa. Tämä auttaa välttämään tahattomia poistoja tarjoamalla yksityiskohtaisen raportin poistettavista kohteista. Näiden edistyneiden vaihtoehtojen hyödyntäminen voi parantaa arkiston ylläpitotehtävien joustavuutta ja tarkkuutta ja varmistaa puhtaamman ja tehokkaamman projektihistorian.
- Mikä tekee tehdä?
- Se poistaa määritettyä kokoa suuremmat blobit arkiston historiasta.
- Kuinka tehdä työtä?
- Se jättää tietyt polut pois suodattimen käsittelemästä.
- Voinko esikatsella muutoksia ennen niiden käyttöönottoa?
- Kyllä, käyttää tarjoaa yksityiskohtaisen raportin muutoksista.
- Miten kohdistan tiettyihin tiedostoihin tai hakemistoihin?
- Käytä mahdollisuus rajoittaa toiminnot tiettyihin polkuihin.
- Mikä on tarkoitus luokka Pythonissa?
- Se mahdollistaa mukautettujen suodattimien soveltamisen arkistoon.
- Onko mahdollista kumota käyttäjän tekemät muutokset ?
- Kun muutokset on otettu käyttöön, niitä ei voi helposti kumota. Varmuuskopioi aina ensin arkistosi.
- Mikä tekee tehdä?
- Se luettelee kaikki arkiston objektit, mukaan lukien blobit, puut ja sitoumukset.
- Miksi käyttää kanssa ?
- auttaa soveltamaan komentoja kohteiden luetteloon, kuten poistettaviin suuriin blobeihin.
Suurten tiedostojen tehokas hallinta Git-varastossa on välttämätöntä suorituskyvyn ja tallennustilan optimoimiseksi. BFG:n ja Git Filter-Repon kaltaisten työkalujen käyttö virtaviivaistaa tätä prosessia, vaikka jokaisella on ainutlaatuiset komennot ja menetelmät. Hyödyntämällä edistyneitä vaihtoehtoja ja ymmärtämällä kunkin työkalun vivahteita voit varmistaa, että arkistosi pysyy puhtaana ja tehokkaana. Muista aina varmuuskopioida arkisto ennen merkittävien muutosten tekemistä tietojen häviämisen välttämiseksi. Näiden työkalujen tietämyksen yhdistäminen strategiseen suunnitteluun parantaa huomattavasti versionhallintakäytäntöjäsi.