Git 2.35 lage kontwòl sous

Apre de mwa nan devlopman, sistèm kontwòl sous distribiye Git 2.35 te lage. 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 494 chanjman, prepare avèk patisipasyon 93 devlopè, nan yo ki 35 te patisipe nan devlopman pou premye fwa. Prensipal inovasyon:

  • Yo te ogmante posiblite pou itilize kle SSH pou siyen objè Git nimerik. Pou limite peryòd validite plizyè kle, sipò pou direktiv OpenSSH "valid-before" ak "valid-after" yo te ajoute, ak ki ou ka asire travay kòrèk ak siyati apre kle a te wotasyon pa youn nan devlopè yo. Anvan sa a, te gen yon pwoblèm ak separasyon siyati yo pa ansyen ak nouvo kle a - si ou efase ansyen kle a, li pral enposib verifye siyati yo te fè ak li, epi si ou kite li, Lè sa a, li pral rete posib. kreye nouvo siyati ak ansyen kle a, ki te deja ranplase pa yon lòt kle. Sèvi ak valid-before ak valid-after ou ka separe sijè ki abòde kle yo dapre lè yo te kreye siyati a.
  • Nan anviwònman merge.conflictStyle, ki pèmèt ou chwazi mòd pou montre enfòmasyon sou konfli pandan yon fizyone, sipò pou mòd "zdiff3" la parèt, ki deplase tout liy estanda ki espesifye nan kòmansman oswa nan fen konfli a andeyò konfli a. zòn, ki pèmèt pou yon prezantasyon plis kontra enfòmèl ant.
  • Mòd "--staged" la te ajoute nan lòd "git stash" la, ki pèmèt ou kache sèlman chanjman ki ajoute nan endèks la, pou egzanp nan yon sitiyasyon lè ou bezwen tanporèman ranvwaye kèk nan chanjman konplèks yo nan lòd yo premye. ajoute sa ki deja pare epi fè fas ak rès la apre yon ti tan. Mòd la sanble ak "git commit" kòmandman an, ekri sèlman chanjman yo mete nan endèks la, men olye pou yo kreye yon nouvo komèt nan "git stash -staged", rezilta a estoke nan zòn nan kachèt tanporè. Yon fwa yo bezwen chanjman yo, yo ka retounen ak kòmandman "git stash pop".
  • Yo te ajoute yon nouvo fòma spesifikatè nan lòd "git log", "-format=%(describe)", ki pèmèt ou konbine pwodiksyon "git log" ak pwodiksyon kòmand "git describe" la. Paramèt yo pou "git dekri" yo espesifye dirèkteman andedan spesifikatè a ("-format=%(describe:match= , ekskli = )"), kote ou ka genyen tou tags ki pi kout ("—format=%(describe:tags= )") ak konfigirasyon kantite karaktè egzadesimal pou idantifye objè ("—format=%(describe:abbrev= )")). Pa egzanp, pou fè lis 8 dènye komèt ki gen tags ki pa gen yon tag kandida pou lage, epi pou espesifye idantifyan 8 karaktè, ou ka itilize kòmandman an: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2edb95c94 v056-2.34.1-g642f56f95 v8-7-g2.34.1edb203c9 gb2980902bd2.34.1 bbc640f3 v41-212-gffb2.34.1f639d v36-65715-gdf4132cXNUMXadebXNUMX vXNUMX-XNUMX-gXNUMXbXNUMXaXNUMX
  • Anviwònman user.signingKey kounye a sipòte nouvo kalite kle ki pa limite a sa sèlman "ssh-" kalite a epi ki espesifye chemen an plen dosye kle a. Kalite altènatif yo espesifye lè l sèvi avèk "key::" prefiks, pou egzanp "key::ecdsa-sha2-nistp256" pou kle ECDSA.
  • Vitès jenere yon lis chanjman nan mòd "-istogram" la, osi byen ke lè w ap itilize opsyon "-color-moved-ws", ki kontwole mete aksan sou espas yo nan diferans koulè a, te ogmante konsiderableman.
  • Kòmandman "git jump" la, ki itilize pou bay Vim enfòmasyon sou so egzak la nan pozisyon an vle nan yon dosye lè analize konfli fizyone, gade diferans, oswa fè yon operasyon rechèch, bay kapasite pou diminye konfli fizyon yo kouvri. Pa egzanp, pou limite operasyon yo nan anyè "foo" sèlman, ou ka presize "git jump merge - foo", epi pou eskli anyè "Dokimantasyon" nan pwosesis - "git jump merge - ':^Documentation'"
  • Travay yo te fèt pou estandadize itilizasyon kalite "size_t" olye pou yo "unsigned long" pou valè ki reprezante gwosè objè yo, sa ki te fè li posib pou itilize filtè "pwòp" ak "smudge" ak dosye ki pi gwo pase 4 GB. sou tout platfòm, ki gen ladan platfòm ak modèl done LLP64 , kalite a "unsigned long" nan ki limite a sa sèlman 4 byte.
  • Opsyon "-empty=(stop|drop|keep)" te ajoute nan lòd "git am" la, ki pèmèt ou chwazi konpòtman an pou mesaj vid ki pa gen plak lè analize plak nan bwat lèt la. Valè "sispann" la pral mete fen nan operasyon an antye patch, "gout" pral sote yon patch vid, ak "kenbe" pral kreye yon komite vid.
  • Te ajoute sipò pou endèks pasyèl (endèks sparse) nan kòmandman "git reset", "git diff", "git blame", "git fetch", "git pull" ak "git ls-files" pou amelyore pèfòmans ak ekonomize espas nan. depo , kote yo fè operasyon klonaj pasyèl (sparse-checkout).
  • Kòmandman "git sparse-checkout init" la te demode epi yo ta dwe ranplase pa "git sparse-checkout set".
  • Te ajoute premye aplikasyon yon nouvo backend "reftable" pou estoke referans tankou branch ak tags nan depo a. Nouvo backend la sèvi ak depo blòk yo itilize pa pwojè JGit la epi li optimize pou estoke yon gwo kantite referans. Backend la poko entegre ak sistèm refs la epi li pa pare pou itilizasyon pratik.
  • Palèt koulè kòmandman "git grep" la te ajiste pou matche ak sèvis piblik GNU grep la.

Sous: opennet.ru

Add nouvo kòmantè