Git

Git madal kloon ja kloonide sügavus

Git madal kloon ja kloonide sügavus

Mõistmine Git-madalale kloonile ja kloonisügavusele

Git on hajutatud versioonikontrollisüsteem. See on üks Giti kasutamise eelistest. Kohaliku töötamise jaoks ei pea te sõltuma kesksest serverist või hoidlast. Kõik, mida vajate oma moodulite ajaloo kohta, on teie käeulatuses. Sellest võib aga saada probleem, kui tegemist on suurte binaarfailidega hoidlatega või pika ajalooga hoidlatega. Eriti kui teil on olukord, kus peate selle iga kord värskelt alla laadima, näiteks ehituskomplekti, võib probleemiks muutuda suurus ja allalaadimisajad.

Giti lahendus probleemile on madal kloon, kus saate klooni sügavuse abil määratleda, kui sügavale teie kloon peaks minema. Näiteks kui kasutate -depth 1, saab kloonimise ajal Git ainult vastavate failide viimase koopia. See võib säästa palju ruumi ja aega.

Git madal kloon ja suurus

Heidame pilgu Django populaarsele Giti hoidlale. Kui kloonite repo täielikult, saate järgmise:

$ giti kloon https: // github.com / django / django.git
Kloonimine djangosse ..
kaugjuhtimine: Objektide loendamine: 409053, valmis.
kaugjuhtimine: Objektide tihendamine: 100% (26/26), valmis.
kaugjuhtimispult: kokku 409053 (delta 6), taaskasutatud 8 (delta 1), pakendis taaskasutatud 409026
Objektide vastuvõtmine: 100% (409053/409053), 167.77 MiB | 5.95 MiB / s, valmis.
Deltade lahendamine: 100% (297045/297045), valmis.
Ühenduse kontrollimine ... valmis.
Failide kontrollimine: 100% (5860/5860), valmis.

Kui kontrollite kohaliku koopia suurust, on see järgmine:

$ du -sh django /
225 miljonit django /

Hankime sama Django hoidla madala klooniga:

Kloon $ git - sügavus 1 https: // github.com / django / django.git
Kloonimine djangosse ..
kaugjuhtimine: Objektide loendamine: 8091, tehtud.
kaugjuhtimine: Objektide tihendamine: 100% (4995/4995), valmis.
kaugjuhtimispult: kokku 8091 (delta 2036), taaskasutatud 5507 (delta 1833), pakendis taaskasutatud 0
Objektide vastuvõtmine: 100% (8091/8091), 8.82 MiB | 3.29 MiB / s, valmis.
Deltade lahendamine: 100% (2036/2036), valmis.
Ühenduse kontrollimine ... valmis.
Failide kontrollimine: 100% (5860/5860), valmis.

Kui kontrollite kohaliku koopia suurust, peaks see olema oluliselt väiksem:

$ du -sh django /
55 miljonit django /

Kui teie server tegeleb sadade tootesarjadega, võib selline kõvakettaruumi säästmine olla kasulik. Mänguprojektide korral, kus on palju binaare, võib sellel olla dramaatiline mõju. See aitab ka pikaajaliste projektide puhul. Näiteks on GitHubi kogu Linuxi hoidla kloonimine üle 7 GB, kuid võite selle kloonida vähem kui 1 GB.

Git madal kloon ja ajalugu

Madalat kloonimist saate kohapeal kontrollida oma hoidlaga. Loome oma kohalikus hoidlas faili, teeme muudatused ja pühendame selle 10 korda. Ja siis saame kloonida hoidla:

$ mkdir _näide
$ cd _näide
$ ls
$ git init
Initsialiseeritud tühi Giti hoidla kataloogis / Kasutajad / zakh / git_repo / _example /.git /
$ echo x> suur_fail
$ git lisa -A
$ git pühendus -m "Esialgne kohustus"
[master (juur-pühenduma) dd11686] Esialgne kohustus
1 fail muudetud, 1 sisestus (+)
loomisrežiim 100644 suur_fail
$ echo xx> suur_fail
$ git lisa -A
$ git pühendama -m "Suurte failide 1 muutmine"
[master 9efa367] Suur_faili 1 muutmine
1 fail muudetud, 1 sisestus (+), 1 kustutatud (-)


$ mkdir test
$ cd test
Kloonifail $ git: //// kasutajad / zakh / git_repo / _example
Kloonimine '_example' ..
kaugjuhtimine: Objektide loendamine: 33, valmis.
kaugjuhtimine: Objektide tihendamine: 100% (22/22), valmis.
kaugjuhtimispult: kokku 33 (delta 10), taaskasutatud 0 (delta 0)
Objektide vastuvõtmine: 100% (33/33), 50.03 MiB | 42.10 MiB / s, valmis.
Deltade lahendamine: 100% (10/10), valmis.
Ühenduse kontrollimine ... valmis.

Selles näites oleme loonud kausta / Kasutajad / zakh / git_repo / kausta _exit git ühe suure_failiga. Kuvatakse ainult kaks esimest toimingut. Seejärel loome selle hoidla täieliku klooni teises kohas.

Seejärel kontrollime oma kohustuste ajalugu:

$ git log - oneline
7fa451f suur_faili 10 muutmine
648d8c9 suur_faili 9 muutmine
772547a suur_faili 8 muutmine
13dd9ab suur_faili muutmine 7
5e73b67 suur_faili muutmine 6
030a6e7 suur_faili 5 muutmine
1d14922 suur_faili muutmine 4
bc0f2c2 Suurte failide 3 muutmine
2794f11 suur_faili 2 muutmine
d4374fb suur_faili muutmine 1
924829d Esialgne kohustus

Me näeme kõiki kohustusi täiskloonis.
Kustutame nüüd praeguse koopia ja seejärel madala klooni sügavusega 1:

$ git kloon - 1. sügavuse fail: //// kasutajad / zakh / git_repo / _example
Kloonimine '_example' ..
kaugjuhtimine: Objektide loendamine: 3, valmis.
kaugjuhtimine: Objektide tihendamine: 100% (2/2), valmis.
kaugjuhtimispult: kokku 3 (delta 0), taaskasutatud 0 (delta 0)
Objektide vastuvõtmine: 100% (3/3), 50.02 MiB | 65.12 MiB / s, valmis.
Ühenduse kontrollimine ... valmis.

Kui vaatame praegu ajalugu, näeme ainult viimast kohustuste ajalugu:

$ git log - oneline
7fa451f suur_faili 10 muutmine

Vaatame madalat klooni sügavusega 3:

Klooni $ git klapp - 3. sügavus: //// kasutajad / zakh / git_repo / _example
Kloonimine '_example' ..
kaugjuhtimine: Objektide loendamine: 9, tehtud.
kaugjuhtimine: Objektide tihendamine: 100% (6/6), valmis.
kaugjuhtimispult: kokku 9 (delta 2), taaskasutatud 0 (delta 0)
Objektide vastuvõtmine: 100% (9/9), 50.02 MiB | 65.15 MiB / s, valmis.
Delta lahutamine: 100% (2/2), valmis.
Ühenduse kontrollimine ... valmis.

Nüüd näeme rohkem kohustusi:

$ git log - oneline
7fa451f suur_faili 10 muutmine
648d8c9 suure_faili 9 muutmine
772547a suur_faili 8 muutmine

Probleemid madala klooniga Git

Kasutajad peaksid mõistma, et suurus ja allalaadimisaja kokkuhoid sõltuvad kohustuste korraldusest. Need võivad hoidlates oluliselt erineda. Hoidla tasub testida madala klooniga, et kontrollida, kui palju kõvakettaruumi ja allalaadimisaega see säästab.

Teine kaalutlus on see, et kuigi saate koodi lükata madalast kloonist, võib kaug- ja kohaliku serveri vaheliste arvutuste tõttu kauem aega võtta. Nii et kui teete koodi regulaarselt kohalikust koopiast, on tõenäoliselt mõttekas kasutada täisklooni.

Mitme haru võimalus

Kui kasutate klooni käsuga -depth lippu, eeldab Git vaikimisi lipu -single-branch. Kuid saate lipu -no-single-branch abil öelda, et Git saaks ajalugu iga haru määratud sügavusest.

Siin on Django harud ilma valikuta-ühe haruga (sügavus 1):

$ git filiaal -a
* meister
kaugjuhtimispuldid / päritolu / HEAD -> päritolu / master
kaugjuhtimispuldid / päritolu / kapten

Kohal on ainult põhiharu.

Siin on Django harud pärast valiku -no-single-branch kasutamist:

$ git kloon - sügavus 1 - mitte ühe haruga https: // github.com / django / django.git
Kloonimine djangosse ..
kaugjuhtimispult: Objektide loendamine: 95072, valmis.
kaugjuhtimispult: Objektide tihendamine: 100% (42524/42524), valmis.
kaugjuhtimispult: kokku 95072 (delta 52343), taaskasutatud 82284 (delta 42389), pakendis taaskasutatud 0
Objektide vastuvõtmine: 100% (95072/95072), 74.69 MiB | 3.95 MiB / s, valmis.
Deltade lahutamine: 100% (52343/52343), valmis.
Ühenduse kontrollimine ... valmis.
Failide kontrollimine: 100% (5860/5860), valmis.
$ du -sh django
124M django

Pange tähele, kuigi sügavus on endiselt 1, on klooni suurus eelmise juhtumi 55M asemel 124M.
Kui kontrollime oksi, peaksime sellel kloonil nägema palju rohkem harusid:

$ cd django
$ git filiaal -a
* meister
kaugjuhtimispuldid / päritolu / HEAD -> päritolu / master
puldid / algus / pööning / rändrahn-oraakel-sprint
puldid / päritolu / pööning / kogu ajalugu
kaugjuhtimispuldid / päritolu / pööning / üldine autor
puldid / päritolu / pööning / gis
puldid / päritolu / pööning / i18n
puldid / päritolu / pööning / maagia eemaldamine
kaugjuhtimispuldid / päritolu / pööning / mitme autoriga
puldid / päritolu / pööning / mitu-db-tugi
kaugjuhtimispuldid / päritolu / pööning / uus-admin
puldid / päritolu / pööning / newforms-admin
kaugjuhtimispuldid / originaal / pööning / objekti kohta-load
kaugjuhtimispuldid / päritolu / pööning / queryset-refactor
puldid / algus / pööning / skeem-evolutsioon
puldid / algus / pööning / skeem-evolutsioon-ng
kaugjuhtimispuldid / päritolu / pööning / otsing-api
kaugjuhtimispuldid / päritolu / pööning / sqlalchemy
puldid / päritolu / pööning / unicode
kaugjuhtimispuldid / päritolu / kapten
puldid / päritolu / soc2009 / admin-ui
puldid / origin / soc2009 / http-wsgi-parannused
puldid / origin / soc2009 / i18n-parannused
kaugjuhtimispuldid / päritolu / soc2009 / mudeli kinnitamine
kaugjuhtimispuldid / origin / soc2009 / multidb
kaugjuhtimispuldid / origin / soc2009 / test-parannused
kaugjuhtimispuldid / origin / soc2010 / app-loading
kaugjuhtimispuldid / origin / soc2010 / query-refactor
kaugjuhtimispuldid / origin / soc2010 / test-refactor
kaugjuhtimispuldid / päritolu / stabiilne / 0.90.x
kaugjuhtimispuldid / päritolu / stabiilne / 0.91.x
kaugjuhtimispuldid / päritolu / stabiilne / 0.95.x
kaugjuhtimispuldid / päritolu / stabiilne / 0.96.x
puldid / päritolu / stabiilne / 1.0.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.1.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.10.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.11.x
puldid / päritolu / stabiilne / 1.2.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.3.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.4.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.5.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.6.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.7.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.8.x
kaugjuhtimispuldid / päritolu / stabiilne / 1.9.x
kaugjuhtimispuldid / päritolu / stabiilne / 2.0.x

Kokkuvõte

Giti madal kloon aitab säästa aega ja kõvakettaruumi. Kuid sellel on oma hind. Kui lükkate koodi regulaarselt kaughoidlatesse, pikendab see pühendumisaega. Nii et tavaliste töövoogude jaoks on hea vältida madalaid klooni.

Viited:

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...