Git 2.41 Quellkontrollsystem verfügbar

No dräi Méint vun der Entwécklung ass d'Verëffentlechung vum verdeelte Quellekontrollsystem Git 2.41 publizéiert. Git ass ee vun de populäersten, zouverlässegsten an héich performante Versiounskontrollsystemer déi flexibel net-linear Entwécklungsinstrumenter ubidden baséiert op Verzweigung a Fusiounszweige. Fir d'Integritéit vun der Geschicht an d'Resistenz géint retroaktiv Verännerungen ze garantéieren, gëtt implizit Hashing vun der ganzer viregter Geschicht an all Verpflichtung benotzt, et ass och méiglech individuell Tags z'iwwerpréiwen an engagéiert mat digitale Ënnerschrëften vun den Entwéckler.

Am Verglach mat der viregter Verëffentlechung enthält déi nei Versioun 542 Ännerungen, virbereet mat der Participatioun vun 95 Entwéckler, vun deenen 29 fir d'éischt Kéier un der Entwécklung deelgeholl hunn. Haaptinnovatiounen:

  • Verbessert Handhabung vun onerreechbaren Objeten déi net am Repository referenzéiert sinn (net vu Filialen oder Tags referenzéiert). Onerreechbar Objete ginn vum Gerempels geläscht, awer bleiwen am Repository fir eng gewëssen Zäit ier se geläscht ginn, fir Rennbedéngungen ze vermeiden. Fir d'Period vun der Optriede vun onerreechbaren Objeten ze verfolgen, ass et néideg Tags un hinnen mat der Zäit vun der Ännerung vun ähnlechen Objeten ze befestigen, wat et net erlaabt se an enger Packdatei ze späicheren an där all Objeten eng gemeinsam Ännerungszäit hunn. Virdru war all onerreechbaren Objet an enger separater Datei gespäichert, wat zu Probleemer gefouert huet, wann et eng grouss Zuel vu frëschen onerreechbaren Objeten waren, déi nach net berechtegt waren fir ze läschen. An der neier Verëffentlechung gëtt de "Cruft Packs" Mechanismus als Standard benotzt fir onerreechbar Objeten ze packen, wat Iech erlaabt all onerreechbar Objeten an enger Packdatei ze späicheren, an Daten iwwer d'Ännerungszäit vun all Objet ginn an enger separater Tabell reflektéiert, gespäichert. an engem Fichier mat der Extensioun ".mtimes" a verbonne mat enger Indexdatei mat der Extensioun ".idx".
    Git 2.41 Quellkontrollsystem verfügbar
  • D'Erhalen vun engem ëmgedréint Index op Disk fir Packdateien ass par défaut aktivéiert. Beim Testen um Torvalds/Linux Repository huet d'Benotzung vun engem ëmgedréint Index et méiglech gemaach Ressourceintensiv "git Push" Operatiounen ëm 1.49 Mol ze beschleunegen, an einfach Operatiounen wéi d'Berechnung vun der Gréisst vun engem eenzegen Objet mat "git cat- file —batch='%(objectsize:disk)' "77 Mol. Dateien (".rev") mat engem ëmgedréint Index ginn am Repository am Verzeechnes ".git/objects/pack" gespäichert.

    Denkt drun datt Git all Daten an der Form vun Objeten späichert, déi an getrennten Dateien lokaliséiert sinn. Fir d'Effizienz vun der Aarbecht mam Repository z'erhéijen, ginn Objeten zousätzlech a Packdateien plazéiert, an deenen d'Informatioun a Form vun engem Stroum vun Objeten noenee presentéiert gëtt (en ähnlecht Format gëtt benotzt wann Dir Objete mam Git Fetch a Git Push transferéiert Kommandoen). Fir all Packdatei gëtt eng Indexdatei (.idx) erstallt, déi Iech erlaabt Iech ganz séier d'Offset an der Packdatei ze bestëmmen, bei där de bestëmmten Objet mat der Objektidentifizéierer gespäichert ass.

    De Réckindex, deen an der neier Verëffentlechung abegraff ass, zielt fir de Prozess vun der Bestëmmung vum Objektidentifizéierer aus Informatioun iwwer d'Placement vum Objet an der Packdatei ze optimiséieren. Virdrun war esou Konversioun op der fléien duerchgefouert iwwerdeems d'Pack Datei parsing a war nëmmen an Erënnerung gespäichert, déi net erlaabt ähnlechen Indexen erëmbenotzt an gezwongen den Index all Kéier generéiert ginn. D'Operatioun fir en Index ze bauen kënnt erof op d'Konstruktioun vun enger Array vun Objekt-Positiounsparen an et no Positioun ze sortéieren, wat laang Zäit fir grouss Packdateien dauert.

    Zum Beispill, eng Operatioun fir den Inhalt vun Objeten ze weisen, déi en direkten Index benotzt, war 62 Mol méi séier wéi eng Operatioun fir d'Gréisst vun Objeten ze weisen, fir déi d'Positioun-zu-Objetdaten net indexéiert goufen. Nodeems Dir de Réckindex benotzt hutt, hunn dës Operatiounen ongeféier d'selwescht Zäit ugefaang. Ëmgekéiert Indexen erlaben Iech och Objekt Sende Operatiounen ze beschleunegen wann Dir Féch- a Push-Kommando ausféiert andeems Dir fäerdeg Donnéeën direkt vun der Disk transferéiert.

    Git 2.41 Quellkontrollsystem verfügbar

  • De "Credential Helper" Protokoll, benotzt fir Umeldungsinformatiounen ze transferéieren wann Dir op Repositories mat limitéierten Zougang zougitt, huet Ënnerstëtzung bäigefüügt fir WWW-Authenticate Header tëscht dem Umeldungshandler an dem Service an deem d'Authentifikatioun duerchgefouert gëtt. Ënnerstëtzung fir den WWW-Authenticate Header erlaabt Iech OAuth Ëmfang Parameteren ze passéieren fir eng méi granulär Trennung vum Benotzer Zougang zu Repositories an Ofgrenzung vun den Ëmfang, déi fir Ufroe verfügbar sinn.
  • D'Formatéierungsoptioun "%(ahead-behind:" an de for-each-ref Kommando bäigefüügt: )", wat Iech erlaabt Iech direkt Informatiounen iwwer d'Zuel vun de Verpflichtungen ze kréien, déi an enger bestëmmter Branche präsent sinn oder net feelen, par rapport zu enger anerer Branche (wéi vill eng Branche hannert oder virun enger anerer um Engagementniveau ass). Virdrun, fir sou Informatioun ze kréien, musst Dir zwee separat Kommandoen ausféieren: "git rev-list -count main..my-feature" fir d'Zuel vun den Engagementer eenzegaarteg fir d'Branche ze kréien an "git rev-list -count my-feature" ..main" fir d'Zuel vermësst Verpflichtungen ze kréien. Elo kënnen esou Berechnungen op een eenzegt Kommando reduzéiert ginn, wat d'Schreiwen vun Handler vereinfacht an d'Ausféierungszäit reduzéiert. Zum Beispill, fir Filialen ze weisen déi net fusionéiert goufen an ze evaluéieren ob se hannert oder virun der Haaptzweig sinn, kënnt Dir e One-Liner benotzen: $ git for-each-ref —no-merged=origin/HEAD \ —format ='%(refname:short) %(ahead-behind :origin/HEAD)' \refs/heads/tb/ | Kolonn -t tb/cruft-extra-Tipps 2 96 tb/fir-all-ref-ausgeschloss 16 96 tb/roaring-bitmaps 47 3 amplaz vum virdru benotzte Skript, deen 17 Mol méi lues leeft: $ git fir-all-ref — format='%(refname:short)' —no-merged=origin/HEAD \ refs/heads/tb | iwwerdeems liesen ref do ahead = "$(git rev-list -count origin/HEAD..$ref)" hannert = "$(git rev-list -count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" gemaach | Kolonn -t tb/cruft-extra-Tipps 2 96 tb/fir-all-ref-ausgeschloss 16 96 tb/roaring-bitmaps 47 3
  • D'Optioun "-porcelain" gouf zum Kommando "git fetch" bäigefüügt, wann spezifizéiert gëtt d'Ausgab am Format " ", manner liesbar, awer méi praktesch fir an Scripten ze analyséieren.
  • D'Astellung "fetch.hideRefs" bäigefüügt, wat Iech erlaabt "git fetch" Operatiounen ze beschleunegen andeems Dir e puer vun de Referenzen am lokalen Repository verstoppt an der Stuf vun der Iwwerpréiwung datt de Server e komplette Set vun Objekter geschéckt huet, wat Zäit spuert duerch limitéiert de Scheck nëmmen op Serveren, vun deenen d'Donnéeën direkt zréckgezunn sinn. Zum Beispill, wann Dir en Test op engem System leeft mat Repositories déi eng grouss Zuel vu verfollegte externe Linken enthalen, ausser all Linken ausser déi, déi un den Zilserver adresséiert sinn $ Remote reduzéiert d'Ausféierung vun der Git Fetch Operatioun vun 20 Minutten op 30 Sekonnen. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/Remotes/$Remote \fetch $Remote
  • De Kommando "git fsck" bitt d'Fäegkeet fir Korruptioun, Checksum Konformitéit a Korrektheet vu Wäerter an Accessibilitéit Bitmaps a Reverse Indexen ze kontrolléieren.
  • De Kommando "git clone --local" weist elo e Feeler wann Dir probéiert aus engem Repository ze kopéieren deen Symlinks bannent $GIT_DIR enthält.

Source: opennet.ru

Setzt e Commentaire