Kopeeri 200 MB fail ja see lendab. Käivita git status samas kataloogis ja ootamine on piisavalt pikk, et mõttega mujale minna. Need kaks tähelepanekut ei ole vastuolus, sest hulgisiire mõõdab läbilaskevõimet, samas kui Git mõõdab, kui mitu väikest failisüsteemi küsimust suudab ta sekundis esitada, ja ühendatud kaugpuu muudab iga küsimuse edasi-tagasi käiguks. VPN-i häälestamine ei paranda valesti kujundatud töökoormust.

Miks status on vale mõõdupuu

Git peab teadma paljude failide kohta: millised on muudetud, millised on jälitamata ja kas vahemällu salvestatud indeksiandmed vastavad endiselt sellele, mis kettal on. SSHFS-i korral võib iga selline tähelepanek olla võrguoperatsioon. Tööühik on siin failide arv, mitte megabaidid.

Seepärast on esimene status pärast kloonimist aeglane ja seepärast võivad hilisemad olla veelgi aeglasemad puus, mis on täis ehituse väljundit. Jälitamata failide skaneerimine läbib katalooge, mis sind võib-olla ei huvita, ja iga samm on veel üks päring üle ühenduse. 40 ms teel muutub paarituhande kirjega puu paari tuhande edasi-tagasi käiguks. Selle aritmeetika kinnitamiseks pole paketipüüdmist vaja.

Allalaadimise mõõdik ütleb, et ühendus on korras; see ei ütle midagi selle kohta, kas tuhat väikest lugemist täna pärastlõunal lõpeb.

Vii tööpuu mujale, mitte häälestusnupud

Kohalik kloon paneb tööpuu, indeksi ja Giti operatsioonid samasse masinasse. Pull muutub nähtavaks võrgusammuks, selle asemel et iga failikontroll seda teeks.

See sobib alati, kui arendaja saab vajaliku lähtekoodi kohapeal hoida, mis on enamasti nii. See teravdab ka commit'i ja juurutamise piiri, sest kohaliku faili muutmine ei muuda enam kogemata töötavat kaugteenust; muudatus tuleb pushida ja juurutada nagu kõike muud. Hind on see, et kood on kahes kohas, seega otsusta, milline koopia on autoriteetne ja kuidas serveri kiirparandus hoidlasse tagasi jõuab. See vestlus on odavam kui status-käsk, mida keegi käivitada ei taha.

Kui tööruum peab jääma kaugele, käivita Git seal

Mõnikord ei saa tööruumi liigutada: ehitus vajab seda keskkonda, andmed on liiga suured või poliitika hoiab lähtekoodi hostis. Siis käivita Git ja asjakohased arendusvahendid failide kõrval, heakskiidetud kaugkesta või kaugarenduse keskkonna kaudu. Redaktor võib jääda sülearvutisse, samal ajal kui selle taust töötab tööpuu kõrval.

Kallid operatsioonid toimuvad siis kohapeal kaugmasinas ja võrk kannab redaktori liiklust tuhandete stat-kutsete asemel. See on sama parandus nagu kohalik kloon, väljendatuna juurutamisvalikuna, mitte migratsioonina.

Sünkroonimine on omanikega töövoog, mitte vahemälu

Sünkroonitud tööruum võib vähendada korduvaid kauglugemisi, kuid see ei ole läbipaistev vahemälu. See vajab omanikku iga muudatuse jaoks, reeglit konfliktide jaoks ja kokkulepet genereeritud failide kohta, mida mõlemad pooled peavad enda omaks. Nende reegliteta tekitab korraldus lahkarvamust, mitte mugavust.

Kahesuunaline sünkroonija ilma nendeta tekitab teistsuguse probleemi kui see, mille ta lahendas, tavaliselt ühendamise, mida keegi ei oska omistada. Väldi kahe Giti protsessi käivitamist ühe jagatud tööpuu vastu, kui sa ei mõista, kuidas need koordineeruvad.

Seejärel häälesta ja hoia SSH mõistlik

Kui korraldus on õige, muudavad kaks seadet, kui paljude failide kohta Git peab küsima: status.showUntrackedFiles ja jälitamata failide vahemälu core.untrackedCache taga. Kumbki ei muuda seda, kui palju iga küsimus üle 40 ms maksab; nad muudavad ainult seda, kui palju küsimusi on. Keera nuppu alles siis, kui edasi-tagasi käigud on kohalikud.

Mõõda aega käsklusel, mis sind ärritab, selle asemel et tuletada seda mõõdikust, mis kopeerib ühe suure faili, ja jäta toetatud SSH-krüpteerimine puutumata. Vananenud šiffer ei lühenda edasi-tagasi käiku; see lisab teise probleemi, mis elab esimesest kauem. Git statusi viide on väärt üht lugemist, sest käsk teeb palju rohkem tööd, kui selle nimi vihjab.

Seotud artiklid