git status zvarritet në SSHFS përmes VPN: zhvendos punën
Një skedar i madh kopjohet mirë dhe git status zvarritet. Nëse pema është në SSHFS përmes VPN, kostoja janë udhëtime vajtje-ardhje për skedar, jo gjerësia e brezit. Zhvendos punën.
Kopjo një skedar 200 MB dhe fluturon. Ekzekuto git status në të njëjtin drejtori dhe pritja është mjaft e gjatë për t'u kthyer nga diçka tjetër. Këto dy vëzhgime nuk kundërshtojnë njëra-tjetrën, sepse transferimi masiv mat qarkullimin ndërsa Git mat sa pyetje të vogla drejt sistemit të skedarëve mund të bëjë në sekondë, dhe një pemë e largët e montuar e kthen çdo pyetje në një udhëtim vajtje-ardhje. Rregullimi i VPN nuk do të rregullojë një ngarkesë të formuar gabimisht.
Pse status është matësi i gabuar
Git duhet të dijë për shumë skedarë: cilët janë ndryshuar, cilët nuk ndiqen dhe nëse të dhënat e indeksit në cache ende përputhen me atë që është në disk. Përmes SSHFS secili prej këtyre vëzhgimeve mund të jetë një operacion rrjeti. Njësia e punës këtu është numri i skedarëve, jo megabajtët.
Për këtë arsye status-i i parë pas një klonimi është i ngadalshëm, dhe për këtë arsye të mëpasshmit mund të jenë edhe më të ngadalshëm në një pemë plot me prodhim ndërtimi. Skanimi i të pandjekurve kalon nëpër drejtori për të cilat mund të mos interesohesh, dhe çdo hap është një kërkesë tjetër përmes lidhjes. Në një rrugë 40 ms një pemë me disa mijëra hyrje bëhet disa mijëra udhëtime vajtje-ardhje. Nuk nevojitet kapje paketash për të konfirmuar këtë aritmetikë.
Një matës shkarkimi të thotë se lidhja është mirë; nuk thotë asgjë për faktin nëse një mijë lexime të vogla do të përfundojnë këtë pasdite.
Zhvendos pemën e punës, jo pullat e rregullimit
Një klon lokal vendos pemën e punës, indeksin dhe operacionet Git në të njëjtën makinë. Një pull bëhet një hap i dukshëm rrjeti, në vend që të jetë çdo kontroll skedari.
Kjo përshtatet sa herë që zhvilluesi mund ta mbajë burimin e nevojshëm lokalisht, gjë që është shumicën e herëve. Gjithashtu mpreh kufirin midis commit dhe vendosjes në prodhim, sepse redaktimi i një skedari lokal nuk ndryshon më aksidentalisht një shërbim të largët që po punon; ndryshimi duhet të shtyhet dhe të vendoset si çdo gjë tjetër. Çmimi është që kodi ekziston në dy vende, prandaj vendos cila kopje është autoritative dhe si një rregullim urgjent në server kthehet në depo. Ai bisedim është më i lirë sesa një komandë status që askush nuk dëshiron ta ekzekutojë.
Nëse hapësira e punës duhet të mbetet e largët, ekzekuto Git atje
Ndonjëherë hapësira e punës nuk mund të zhvendoset: ndërtimi ka nevojë për atë mjedis, të dhënat janë shumë të mëdha ose politika e mban burimin në host. Atëherë ekzekuto Git dhe mjetet përkatëse të zhvillimit pranë skedarëve, përmes një shell të largët të miratuar ose një mjedisi zhvillimi të largët. Redaktori mund të mbetet në laptop ndërsa backend-i i tij punon pranë pemës së punës.
Operacionet e kushtueshme ndodhin atëherë lokalisht në hostin e largët, dhe rrjeti mbart trafikun e redaktorit në vend të mijëra thirrjeve stat. Është i njëjti rregullim si një klon lokal, i shprehur si zgjedhje vendosjeje dhe jo si migrim.
Sinkronizimi është një rrjedhë pune me pronarë, jo një cache
Një hapësirë pune e sinkronizuar mund të pakësojë leximet e përsëritura të largëta, por nuk është një cache transparente. Ka nevojë për një pronar për çdo ndryshim, një rregull për konfliktet dhe një marrëveshje për skedarët e gjeneruar që të dyja palët i mendojnë të tyret. Pa këto rregulla rregullimi krijon mospajtim në vend të lehtësisë.
Një sinkronizues dydrejtimësh pa to prodhon një problem tjetër nga ai që zgjidhi, zakonisht një bashkim që askush nuk mund t'ia atribuojë. Shmang ekzekutimin e dy proceseve Git mbi një pemë pune të përbashkët, përveç nëse kupton se si koordinohen.
Pastaj rregullo, dhe mbaj SSH të arsyeshëm
Kur rregullimi është i saktë, dy cilësime ndryshojnë se për sa skedarë duhet Git të pyesë: status.showUntrackedFiles dhe cache-i i të pandjekurve pas core.untrackedCache. Asnjëri nuk ndryshon sa kushton çdo pyetje përgjatë 40 ms; ato ndryshojnë vetëm sa pyetje ka. Kthe një pullë vetëm kur udhëtimet vajtje-ardhje janë lokale.
Mat kohën e komandës që të bezdis në vend që të arsyetosh nga një matës që kopjon një skedar të madh, dhe lëre kriptimin SSH të mbështetur të qetë. Një shifër e vjetëruar nuk e shkurton një udhëtim vajtje-ardhje; shton një problem të dytë që mbijeton më gjatë se i pari. Referenca e git status vlen një lexim, sepse komanda bën shumë më shumë punë sesa sugjeron emri i saj.