Liberasyon sistèm kontwòl sous distribiye Git 2.24

Disponib lage yon sistèm kontwòl sous distribiye git 2.24.0. Git se youn nan sistèm kontwòl vèsyon ki pi popilè, serye ak pèfòmans segondè, ki bay zouti devlopman fleksib ki pa lineyè ki baze sou branch ak fizyon. Pou asire entegrite istwa a ak rezistans nan chanjman retwoaktif, yo itilize hashing implicite nan tout istwa anvan an nan chak komèt; li posib tou pou sètifye tag endividyèl ak komèt ak siyati dijital devlopè yo.

Konpare ak lage anvan an, nouvo vèsyon an enkli 544 chanjman, ki te prepare avèk patisipasyon 78 devlopè, nan yo ki 21 te patisipe nan devlopman pou premye fwa. Prensipal la inovasyon:

  • Te ajoute sipò pou makro konfigirasyon, atravè kote ou ka byen vit chanje ant diferan seri anviwònman san yo pa antre nan detay sou opsyon espesifik ki asosye ak yo. Avèk èd macros, pa gen okenn nesesite pou sonje ki paramèt yo bezwen chanje pou aktive fonksyonalite sa a oswa sa. Pa egzanp, si yon gwo depo ralanti, ou ta ka vle chanje nan yon nouvo motè Indexing, pèmèt konpresyon prefiks chemen, epi pèmèt kachèt fichye ki pa swiv lè w mete index.version a 4 epi pèmèt core.untrackedCache. Macro pèmèt ou pa gaspiye tan pou chèche solisyon an dwa nan dokiman an, men imedyatman aktive anviwònman ak optimize pou depo ak yon gwo kantite dosye:

    git config feature.manyFiles vre

  • Aktive pa defo se depo objè yo nan fòm yon graf komèt (komèt-graf), nan ki pa yon lis lineyè hashes nan objè ki gen lyen ki mennen nan lòt objè, men yon estrikti nan fòm lan nan yon graf yo itilize pou Indexing. . Si anvan, yo nan lòd yo detèmine degaje yo ki gen yon ranje sèten, li te nesesè yo chaje chak objè ki soti nan disk pou fè rechèch pou lyen, Lè sa a, lè yo estoke nan fòm lan nan yon graf, ou ka imedyatman detèmine tout lyen ki nesesè yo. Chanje nan depo sou fòm yon graf komèt nan nwayo Linux ak depo Git te pèmèt nou reyalize yon ogmantasyon prèske de fwa nan pèfòmans operasyon ak branch yo. Pou pèmèt nouvo metòd depo a apre ou fin amelyore nan Git 2.24, ou dwe kouri lòd "git gc".

    Pami chanjman ki asosye ak commit-graph, nou note tou ke aplikasyon endikatè pwogrè operasyon an nan kòmandman ki gen rapò ak komit-graf ("git commit-graph write", "git commit-graph verify", elatriye) te pote. nan yon fòm komen ak lòt kòmandman. .). Kounye a, endikatè pwogrè a parèt sèlman pou tèminal la pa default (sèvi ak opsyon "-[no-]progress" pou chanje konpòtman an). Anplis de sa, yo te ajoute yon nouvo paramèt konfigirasyon fetch.writeCommitGraph, ki pèmèt aktyalizasyon otomatik fichye a ak graf komit la pandan operasyon "git fetch" (tout komite yo rekipere nan depo ekstèn yo pral imedyatman ale nan komit-graf la san yo pa bezwen kouri oto-gc separeman);

  • Te ajoute yon lòd pou ranplase istwa chanjman an - "git filter-repo", ki se yon altènatif ki pi senp nan lòd la "git filter-branch» pou fè operasyon sou istwa chanjman nan depo a (pa egzanp, efase yon fichye nan depo a oswa rekipere istwa chanjman nan yon anyè espesifik). Pou amelyore efikasite, olye pou yo analize komèt pa komèt lòd, git filter-repo fè operasyon sou reprezantasyon istwa a nan fòm yon kouran kontinyèl.

    Filtrage Istwa fèt ak opsyon "-path-{glob,regex}", ki pèmèt ou sèvi ak tou de mask senp ak ekspresyon regilye. Genyen tou opsyon pou fè yon rechèch ak ranplase oswa netwaye objè binè ki pi gwo pase yon gwosè espesifye. Chak komite reekri yo bay yon nouvo idantifyan SHA-1 e tout referans sou komite ranplase yo mete ajou dapre nouvo idantifyan an.

    Pou montre yon rezime estatistik sou depo a (kantite objè pa kalite, pi gwo fichye ak repèrtwar, ki ekstansyon ki mande plis espas disk, elatriye), yo bay opsyon "-analyze". Pou elaji fonksyonalite a, li posib konekte moun kap okipe abitrè callback nan Python, atravè ki ou ka tou de kreye nouvo soukòmand ak trete divès evènman (pa egzanp, nouvo kalite dosye);

  • Te ajoute opsyon "--end-of-options" pou separe opsyon ak non lyen yo, ki ka kòmanse ak yon karaktè "-" epi yo ka trete kòm opsyon ("git log --end-of-options -super-dangerous-option" ). Si nan lavi chak jou, non sa yo ka chape kòm "git log 'refs/heads/-super-dangerous-option'", Lè sa a, scripts yo ta ka gen pwoblèm defini espas non an. Delimiter jeneralman aksepte " - " pa aplikab nan ka sa a, paske li deja itilize pou separe non lyen ak dosye (pa egzanp, “git log —end-of-options —super-dangerous-option ^master — path/to /fichye");
  • Te ajoute opsyon "--strategy" ak "--strategy-option" nan "git rebase --rebase-merges" pou chwazi estrateji fizyon yo;
  • Te ajoute yon nouvo ".git/hooks/pre-merge-commit" ke yo rele apre yon fizyon fini men anvan yo ekri komite ki lakòz;
  • Sipò pou ranpli varyab konfigirasyon an relasyon ak anviwònman yo nan kòmandman espesifik yo te ajoute nan motè a fini lòd.
    Pa egzanp, si ou bezwen tape "git -c core.autocrlf=false add path/to/my/file" men ou pa sonje non egzak "core.autocrlf" varyab la, ou ka peze Tab epi jwenn yon allusion.

Anplis de sa, devlopè Git te ajoute kòd konduit pou yon patisipan pwojè, ki defini prensip debaz yo pou rezoud sitiyasyon konfli. Dokiman an baze sou rekòmandasyon yo "Kontra kontribitè", yo itilize nan anpil pwojè sous louvri, ki gen ladan Linux Kernel, Eclipse, Freedesktop, GitLab, Ruby ak Kubernetes. Dokiman an defini opòtinite egal pou tout patisipan yo, kèlkeswa vizyon lemonn yo, laj yo, sèks yo, preferans relijye yo, nivo edikasyon yo, estati sosyal yo ak nasyonalite yo. Kominote a akeyi yon fòm amikal kominikasyon, konpreyansyon, senpati pou pwoblèm lòt patisipan yo, aksepte kritik konstriktif, epi pran pi bon desizyon pou tout kominote a. Trolling, kominikasyon ofansif, tantativ imilyasyon, arasman, vyolasyon konfidansyalite, divilgasyon enfòmasyon pèsonèl, ak lòt aksyon ki kapab konsidere kòm pa apwopriye pou kominikasyon pwofesyonèl yo pa pèmèt.

Sous: opennet.ru

Add nouvo kòmantè