Liberigo de la distribuita fontkontrolsistemo Git 2.31

La distribua fontkontrola sistemo Git 2.31 nun estas disponebla. Git estas unu el la plej popularaj, fidindaj kaj alt-efikecaj versikontrolaj sistemoj, provizante flekseblajn ne-liniajn evoluilojn bazitajn sur disbranĉigo kaj kunfandado. Por certigi la integrecon de la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio estas uzata en ĉiu komit; ankaŭ eblas atesti individuajn etikedojn kaj transdonojn per ciferecaj subskriboj de la programistoj.

Kompare kun la antaŭa eldono, la nova versio inkludis 679 ŝanĝojn, preparitajn kun la partopreno de 85 programistoj, el kiuj 23 partoprenis en evoluo por la unua fojo. Ĉefaj novigoj:

  • Aldonita la komando "git prizorgado", kiu ebligas al vi plenumi periodan laboron sur sistemoj, kiuj ne subtenas cron. Ekzemple, uzante novan komandon, vi povas aranĝi, ke la deponeja pakprocezo kuru periode, tiel ke vi ne devas atendi ĝis la deponejo estas ŝlosita kiam pakado estas aŭtomate plenumita dum rulado de diversaj komandoj. La komando "git prizorgado" ebligas al vi fari optimumigojn kaj operaciojn por konservi la optimuman strukturon de la deponejo en la fono, sen bloki la interagan sesion - unufoje hore, laboro estas farita por proaktive elŝuti freŝajn objektojn el la fora deponejo kaj ĝisdatigi la dosiero kun la kommit-grafo, kaj la procezo de pakado de la deponejo komenciĝas ĉiunokte.
  • Aldonita subteno por konservi inversan indekson (revindex) sur disko por pakdosieroj. Memoru, ke Git konservas ĉiujn datumojn en la formo de objektoj, kiuj troviĝas en apartaj dosieroj. Por pliigi la efikecon labori kun la deponejo, objektoj estas aldone metitaj en pakdosieroj, en kiuj informoj estas prezentitaj en la formo de fluo de objektoj sekvantaj unu la alian (simila formato estas uzata kiam oni transdonas objektojn per git fetch kaj git push). ordonoj). Por ĉiu pakdosiero, indeksdosiero (.idx) estas kreita, kiu ebligas al vi tre rapide determini la ofseton en la pakdosiero ĉe kiu la donita objekto estas konservita uzante la objektoidentigilon. Enkondukita en Git 2.31, la inversa indekso (.rev) celas optimumigi la procezon de determini objekto-identigilon de informoj pri la lokigo de objekto en pakdosiero.

    Antaŭe, tia konvertiĝo estis farita sur la flugo dum analizado de la pakdosiero kaj estis stokita nur en memoro, kio ne permesis al similaj indeksoj esti reuzitaj kaj devigis la indekson esti generita ĉiufoje. La operacio konstrui indekson signifas konstrui tabelon de objekt-poziciaj paroj kaj ordigi ĝin laŭ pozicio, kio povas daŭri longan tempon por grandaj pakaj dosieroj.

    Ekzemple, operacio por montri la enhavon de objektoj, kiu uzas rektan indekson, estis 62 fojojn pli rapida ol operacio por montri la grandecon de objektoj, por kiuj la pozicio-al-objektaj datumoj ne estis indeksitaj. Post uzi la inversan indicon, ĉi tiuj operacioj komencis daŭri proksimume la saman tempon. Inversaj indeksoj ankaŭ ebligas al vi akceli objektojn sendantajn operaciojn dum plenumado de preni kaj puŝi komandojn rekte transdonante pretajn datumojn de disko. Defaŭlte, inversaj indeksoj ne estas kreitaj; por generi ilin, vi devas ebligi la agordon "git config pack.writeReverseIndex true" kaj poste paki la deponejon per la komando "git repack -Ad".

  • Aldonitaj agado-optimumoj bazitaj sur la aspekto en la dosierformato commit-graph, uzata por optimumigi aliron al informoj pri kommits, novaj datumoj pri la commit-generacia nombro, kiu povas esti uzata por akceli pliajn operaciojn kun kommits.
  • Aldonitaj opcioj por redifini la nomon de la ĉefa branĉo uzata defaŭlte en novaj deponejoj (agordo init.defaultBranch). Alirante eksterajn deponejojn, git provas kontroli la branĉon indikitan de HEAD, t.e. se la ekstera servilo uzas la "ĉefan" branĉon defaŭlte, tiam la operacio "git clone" provos kontroli "ĉefan" loke. Git 2.31 nun subtenas ĉi tiun tipon de checkout por malplenaj deponejoj. Ekzemple, dum klonado de nova deponejo loke antaŭ aldoni la unuajn flikojn al ĝi, la loka kopio nun enhavos la defaŭltan kontraŭfluan nomon fiksitan sur la ekstera servilo.
  • Aldonis opcion --disk-usage al la komando "git rev-list" por provizi resumon de la grandeco de objektoj.
  • Antaŭĝoje de la venonta ŝanĝo al la kunfanda backend, renomi detekto estis signife optimumigita.
  • Subteno por la heredaĵo PCRE1 regula esprimo biblioteko estis nuligita.
  • Eblas perforte malpermesi la uzon de mallongigitaj ligiloj, sendepende de la algoritmo de haĉado. La malpermeso estas ebligita asignante la valoron "ne" al la parametro core.abbrev.
  • Aldonita "--path-format=(absolute|relative)" opcio al la "git rev-parse" komando por eksplicite specifi ĉu relativaj aŭ absolutaj vojoj devus esti eligitaj.
  • Bash-kompletigskriptoj faciligas aldoni kompletigajn regulojn por viaj propraj "git" subkomandoj.
  • Aldonis opcion --stdin al la komando "git bundle" por legi referencojn el la norma eniga fluo.
  • Nova opcio estis aldonita al la komando "git log": "--diff-merges=" "
  • Aldonita "--deduplicatecan" opcio al "git ls-files" komando por forigi duplikatan eligon.
  • Aldonitaj novaj maskoj por ekskludi gamon da komitaĵoj - " ^!” Kaj " ^- "
  • Aldonitaj opcioj "--left-only" kaj "--right-only" al la komando "git range-diff" por montri nur unu flankon de la komparata gamo.
  • Aldonitaj --skip-to= opcioj al la komandoj "git diff" kaj "git log". " kaj "—rotaci-al= » por salti aŭ movi al la fino de la komencaj vojoj.
  • Aldonita "--skip-to=" opcio al "git difftool" komando » por rekomenci interrompitan kunsidon de hazarda vojo.
  • La Kondutkodo, kiu difinas la bazajn principojn por solvi konfliktajn situaciojn inter programistoj, estis ĝisdatigita al versio 2.0 (antaŭe versio 1.4 estis uzita).

    fonto: opennet.ru

Aldoni komenton