Git

Git seklais klons un klona dziļums

Git seklais klons un klona dziļums

Izpratne par Git seklo klonu un klona dziļumu

Git ir izplatīta versiju kontroles sistēma. Tā ir viena no Git izmantošanas priekšrocībām. Lai strādātu lokāli, jums nav jābūt atkarīgam no centrālā servera vai krātuves. Viss, kas jums nepieciešams attiecībā uz moduļu vēsturi, ir tieši jūsu rokai. Tomēr tā var kļūt par problēmu, ja jums ir darīšana ar krātuvēm ar lieliem bināriem failiem vai krātuvēm, kurām ir ilga vēsture. It īpaši, ja jums ir situācija, kad jums tas katru reizi ir jālejupielādē no jauna, piemēram, būvēšanas serveris, lielums un lejupielādes laiks var kļūt par problēmu.

Git problēmas risinājums ir sekls klons, kur jūs varat izmantot klona dziļumu, lai noteiktu, cik dziļi jūsu klonam vajadzētu iet. Piemēram, ja izmantojat -depth 1, tad klonēšanas laikā Git saņems tikai attiecīgo failu jaunāko kopiju. Tas var ietaupīt daudz vietas un laika.

Git sekls klons un izmērs

Apskatīsim populāro Gjan krātuvi Django. Ja jūs pilnībā klonējat repo, jūs saņemat sekojošo:

$ git klons https: // github.com / django / django.git
Klonēšana “django”…
tālvadība: Objektu skaitīšana: 409053, pabeigta.
tālvadība: Objektu saspiešana: 100% (26/26), pabeigta.
tālvadība: kopā 409053 (delta 6), atkārtoti izmantota 8 (delta 1), atkārtoti izmantota iepakojumā 409026
Objektu saņemšana: 100% (409053/409053), 167.77 MiB | 5.95 MiB / s, izdarīts.
Deltas atrisināšana: 100% (297045/297045), izdarīts.
Savienojamības pārbaude ... pabeigta.
Failu pārbaude: 100% (5860/5860), pabeigts.

Ja pārbaudīsit vietējās kopijas lielumu, tas ir:

$ du -sh django /
225M django /

Iegūsim to pašu Django repozitoriju ar seklu klonu:

$ git klons - 1. dziļums https: // github.com / django / django.git
Klonēšana “django”…
tālvadība: Objektu skaitīšana: 8091, pabeigta.
tālvadība: Objektu saspiešana: 100% (4995/4995), pabeigta.
tālvadības pults: Kopā 8091 (delta 2036), atkārtoti izmantota 5507 (delta 1833), iepakojumā atkārtoti izmantota 0
Objektu saņemšana: 100% (8091/8091), 8.82 MiB | 3.29 MiB / s, izdarīts.
Deltas atrisināšana: 100% (2036/2036), izdarīts.
Savienojamības pārbaude ... pabeigta.
Failu pārbaude: 100% (5860/5860), pabeigts.

Tagad, pārbaudot vietējās kopijas lielumu, tam jābūt ievērojami mazākam:

$ du -sh django /
55 miljoni django /

Kad jūsu serveris nodarbojas ar simtiem produktu līniju, šāda veida cietā diska vietas ietaupīšana var būt noderīga. Spēļu projektos, kur ir smagi bināri, tam var būt dramatisks efekts. Tas palīdz arī ilgstošos projektos. Piemēram, pilns Linux repozitorija klonēšana no GitHub ir lielāka par 7 GB, taču jūs to varat klonēt zemāk par 1 GB.

Git seklais klons un vēsture

Jūs varat lokāli pārbaudīt seklu klonēšanu ar savu krātuvi. Izveidosim failu mūsu vietējā repozitorijā, veiksim izmaiņas un izdarīsim to 10 reizes. Un tad mēs varam klonēt repozitoriju:

$ mkdir _piemērs
$ cd _piemērs
$ ls
$ git init
Inicializēta tukša Git krātuve mapē / Lietotāji / zakh / git_repo / _example /.git /
$ echo x> liels_fails
$ git pievienot -A
$ git saistības -m "Sākotnējā saistība"
[galvenais (sakne-apņemšanās) dd11686] Sākotnējā saistība
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 lielais_fails
$ echo xx> liels_fails
$ git pievienot -A
$ git saistīt -m "Liela_faila 1 modifikācija"
[master 9efa367] Modifikācija lielajam failam 1
1 fails mainīts, 1 ievietošana (+), 1 dzēšana (-)


$ mkdir tests
$ cd tests
$ git klona fails: //// Users / zakh / git_repo / _example
Klonēšana “_example”…
tālvadība: Objektu skaitīšana: 33, pabeigta.
tālvadība: Objektu saspiešana: 100% (22/22), pabeigta.
tālvadība: kopā 33 (delta 10), atkārtoti izmantota 0 (delta 0)
Objektu saņemšana: 100% (33/33), 50.03 MiB | 42.10 MiB / s, izdarīts.
Deltu atrisināšana: 100% (10/10), darīts.
Savienojamības pārbaude ... pabeigta.

Šajā piemērā esam izveidojuši _example git krātuvi mapē / Users / zakh / git_repo / ar vienu lielu_failu. Tiek parādītas tikai pirmās divas saistības. Tad mēs izveidojam pilnu šīs krātuves klonu citā vietā.

Tad pārbaudīsim mūsu saistību vēsturi:

$ git log - tiešsaistē
7fa451f Liela_faila modifikācija 10
648d8c9 Liela_faila 9 modifikācija
772547a 8. lielās_datnes modifikācija
13dd9ab Liela_faila pārveidošana 7
5e73b67 Liela_faila pārveidošana 6
030a6e7 5. lielā faila modifikācija
1d14922 4. lielā faila modifikācija
bc0f2c2 Liela_faila modifikācija 3
2794f11 2. lielā faila modifikācija
d4374fb Liela_faila modifikācija 1
924829d Sākotnējā saistība

Mēs redzam visas saistības pilnā klonā.
Tagad izdzēsīsim pašreizējo kopiju un pēc tam seklu klonu ar dziļumu 1:

$ git clone - 1. dziļuma fails: //// Users / zakh / git_repo / _example
Klonēšana “_example”…
tālvadība: Objektu skaitīšana: 3, pabeigta.
tālvadība: Objektu saspiešana: 100% (2/2), pabeigta.
tālvadības pults: kopā 3 (delta 0), atkārtoti izmantota 0 (delta 0)
Objektu saņemšana: 100% (3/3), 50.02 MiB | 65.12 MiB / s, izdarīts.
Savienojamības pārbaude ... pabeigta.

Ja mēs tagad skatāmies vēsturē, mēs redzam tikai pēdējo saistību vēsturi:

$ git log - tiešsaistē
7fa451f Liela_faila modifikācija 10

Let's sekls klons ar dziļumu 3:

$ git clone - 3. dziļuma fails: //// Users / zakh / git_repo / _example
Klonēšana “_example”…
tālvadība: Objektu skaitīšana: 9, pabeigta.
tālvadība: Objektu saspiešana: 100% (6/6), pabeigta.
tālvadība: kopā 9 (delta 2), atkārtoti izmantota 0 (delta 0)
Objektu saņemšana: 100% (9/9), 50.02 MiB | 65.15 MiB / s, izdarīts.
Deltas atrisināšana: 100% (2/2), darīts.
Savienojamības pārbaude ... pabeigta.

Tagad mēs redzam vairāk apņemšanos:

$ git log - tiešsaistē
7fa451f Liela_faila modifikācija 10
648d8c9 Liela_faila 9 modifikācija
772547a 8. lielās_datnes modifikācija

Problēmas ar Git Shallow Clone

Lietotājiem vajadzētu saprast, ka izmēru un lejupielādes laika ietaupījums ir atkarīgs no saistību organizācijas. Katrā krātuvē tie var ievērojami atšķirties. Ir ieteicams pārbaudīt krātuvi ar seklu klonu, lai pārbaudītu, cik daudz vietas cietajā diskā un lejupielādes laiks ietaupīs.

Vēl viens apsvērums ir tas, ka, pat ja jūs varat nospiest kodu no sekla klona, ​​tas var aizņemt vairāk laika, jo aprēķini notiek starp attālo un vietējo serveri. Tātad, ja jūs regulāri veicat kodu no vietējās kopijas, iespējams, ir lietderīgi izmantot pilnu klonu.

Vairāku filiāļu variants

Ja izmantojat karodziņu -depth ar klonu, Git pēc noklusējuma pieņem karodziņu -sara filiāle. Bet jūs varat izmantot karodziņu -no-single-branch karodziņu, lai Gitam teiktu, ka viņš iegūst vēstures no katra filiāles norādītā dziļuma.

Šeit ir Django filiāles bez opcijas -no-one-branch (1. dziļums):

$ git filiāle -a
* meistars
pulti / izcelsme / GALVA -> izcelsme / meistars
pulti / izcelsme / kapteinis

Klāt ir tikai galvenā filiāle.

Pēc opcijas -no-single-branch izmantošanas ir Django filiāles:

$ git clone --depth 1 --no-one-branch https: // github.com / django / django.git
Klonēšana “django”…
tālvadība: Objektu skaitīšana: 95072, pabeigta.
tālvadība: Objektu saspiešana: 100% (42524/42524), pabeigta.
tālvadības pults: kopā 95072 (delta 52343), atkārtoti izmantota 82284 (delta 42389), atkārtoti izmantota paka 0
Objektu saņemšana: 100% (95072/95072), 74.69 MiB | 3.95 MiB / s, izdarīts.
Deltas atrisināšana: 100% (52343/52343), izdarīts.
Savienojamības pārbaude ... pabeigta.
Failu pārbaude: 100% (5860/5860), pabeigts.
$ du -sh django
124M django

Ievērojiet, kaut arī dziļums joprojām ir 1, klona izmērs ir 124M, nevis 55M iepriekšējā gadījumā.
Ja pārbaudām zarus, šajā klonā vajadzētu redzēt daudz vairāk zaru:

$ cd django
$ git filiāle -a
* meistars
pulti / izcelsme / GALVA -> izcelsme / meistars
pultis / izcelsme / bēniņi / laukakmens-orākuls-sprints
pultis / izcelsme / bēniņi / pilna vēsture
tālvadības pultis / izcelsme / bēniņi / vispārējs aut
pultis / izcelsme / bēniņi / gis
pultis / izcelsme / bēniņi / i18n
pultis / izcelsme / bēniņi / burvju noņemšana
tālvadības pultis / izcelsme / bēniņi / daudzaut
pultis / izcelsme / bēniņi / vairāku db-atbalsts
pultis / izcelsme / bēniņi / jauns-administrators
pultis / izcelsme / bēniņi / newforms-admin
pultis / izcelsme / bēniņi / atļaujas katram objektam
pultis / izcelsme / bēniņi / queryset-refactor
pultis / izcelsme / bēniņi / shēma-evolūcija
pultis / izcelsme / bēniņi / shēma-evolūcija-ng
pultis / izcelsme / bēniņi / meklēšana-api
tālvadības pultis / izcelsme / bēniņi / kvadlīmija
tālvadības pultis / izcelsme / bēniņi / unikods
pulti / izcelsme / kapteinis
tālvadības pultis / origin / soc2009 / admin-ui
pultis / origin / soc2009 / http-wsgi-uzlabojumi
pulti / origin / soc2009 / i18n-uzlabojumi
pulti / origin / soc2009 / modeļa validācija
pulti / origin / soc2009 / multidb
pulti / origin / soc2009 / test-uzlabojumi
tālvadības pultis / origin / soc2010 / app-loading
tālvadības pultis / origin / soc2010 / query-refactor
pultis / origin / soc2010 / test-refactor
pulti / izcelsme / stabils / 0.90.x
pulti / izcelsme / stabils / 0.91.x
pulti / izcelsme / stabils / 0.95.x
pulti / izcelsme / stabils / 0.96.x
pulti / izcelsme / stabils / 1.0.x
pulti / izcelsme / stabils / 1.1.x
pulti / izcelsme / stabils / 1.10.x
pulti / izcelsme / stabils / 1.11.x
pulti / izcelsme / stabils / 1.2.x
pulti / izcelsme / stabils / 1.3.x
pulti / izcelsme / stabils / 1.4.x
pulti / izcelsme / stabils / 1.5.x
pulti / izcelsme / stabils / 1.6.x
pulti / izcelsme / stabils / 1.7.x
pulti / izcelsme / stabils / 1.8.x
pulti / izcelsme / stabils / 1.9.x
pultis / izcelsme / stabils / 2.0.x

Kopsavilkums

Git seklais klons var palīdzēt ietaupīt laiku un vietu cietajā diskā. Bet tam ir sava cena. Ja jūs regulāri virzāt kodu uz attālajām krātuvēm, tas palielinās saistību izpildes laiku. Tāpēc parastām darbplūsmām ir ieteicams izvairīties no sekliem kloniem.

Atsauces:

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...