gitai ni nini?
gitai ni mfumo wa udhibiti wa matoleo wa chanzo huria ulioundwa kwa ajili ya mawakala wa usimbaji wa AI. Unatumia mbinu inayozingatia seva, ambapo wateja hubaki mtandaoni, huchota tu vitu na njia wanazohitaji, na kutuma shughuli za udhibiti wa chanzo kwenye seva.
Mradi huu umehamasishwa na muundo wa Scion wa Anthropic ulioelezwa hadharani, lakini gitai ni utekelezaji huru. Una leseni ya MIT, hauna upendeleo kwa muuzaji, na hauhitaji seva iwasiliane na modeli ya lugha. Shughuli zinazoendeshwa na AI zinaweza kutumia mtoa huduma yeyote, zana bainifu, au kutotumia mtoa huduma wa AI kabisa.
Kwa ndani, gitai hutumia hazina za kawaida za Git huku ikihamisha maswali ya historia, uwekaji wa mabadiliko, ufuatiliaji wa changeset, na uratibu wa hazina kwenye seva. Muundo huu unalenga mzigo wa kazi wenye majukumu mengi ya muda mfupi yanayohitaji kuweka mabadiliko kwenye matawi yanayoshirikiwa kwa haraka.
Vipengele muhimu
- Ufikiaji teule wa data: huduma ya vitu hutoa vitu binafsi na miti adimu. Amri za
graft clonenagraft sparsehuunda tu njia zilizoombwa. - Historia upande wa seva: blame, historia ya njia, ukoo, na utafutaji wa msimbo huendeshwa kwenye seva na kuhifadhiwa kama data inayotokana.
- Kuweka mabadiliko kwa wakati mmoja:
UserLandhuweka upya mabadiliko juu ya ncha ya sasa ya tawi na hutumia masasisho ya compare-and-swap badala ya foleni ya kawaida ya kuunganisha. Mabadiliko mengi yanayowekwa kwa wakati mmoja yanaweza kuunganishwa katika sasisho moja la rejeleo. - Kutatua migogoro: mabadiliko yenye migogoro yanaweza kutumia kitatuzi kilichochaguliwa kupitia itifaki yenye matoleo na isiyofungamana na muuzaji.
- Kumbukumbu ya changeset: masasisho ya rejeleo yanayokubaliwa hurekodi operesheni na mhusika wake katika kumbukumbu iliyopangwa ambayo wateja wanaweza kuorodhesha au kuitazama.
- Hifadhi inayoweza kukua: SQLite au PostgreSQL huhifadhi changeset, marejeleo, ukaguzi, na kumbukumbu ya write-ahead, huku vifurushi vinavyotegemea anwani ya maudhui vinaweza kuhifadhiwa katika hifadhi ya faili, S3, GCS, au Azure.
- Udhibiti wa mawakala: tokeni za kila wakala, orodha za RPC zinazoruhusiwa, na sera za matawi huamua shughuli ambazo mawakala wanaweza kutekeleza.
- Uthibitishaji na ufuatiliaji:
graft-verifyinaweza kujaribu ncha, kugawa kushindwa kwa bisect, na kurejesha mabadiliko yaliyosababisha tatizo. Mawakala wa ufuatiliaji, wanaoitwa superfans, hufuata mtiririko wa changeset na wanaweza kuripoti kupitia Slack. - Uakibishaji mkali:
graft-cacheinaweza kuweka vitu visivyobadilika kwenye viwango vya daemon na vya kikanda huku ikithibitisha kila kitu.
Jinsi muundo unavyofanya kazi
Mawakala, kazi za CI, na nafasi za kazi adimu huwasiliana na seva ya gitai kupitia CLI ya Graft au SDK ya Go kwa kutumia gRPC. Daemon ya hiari ya graft-cache hukaa mbele ya seva ili kutoa viwango vya ziada vya akiba.
Seva hushughulikia uwekaji wa mabadiliko, ufikiaji wa vitu, changeset, data inayotokana, utafutaji, na ukaguzi. Njia yake ya kuandika huunganisha changeset na operesheni ya compare-and-swap kwa kila rejeleo. Hifadhi ya hifadhidata hushikilia kumbukumbu ya write-ahead ya changeset, marejeleo, kumbukumbu ya mabadiliko, na ukaguzi. Hifadhi ya vitu hushikilia vifurushi vinavyotegemea anwani ya maudhui.
Nodi za seva zimeundwa kuwa akiba zisizo na hali zinazoweza kujengwa upya. Hii huruhusu kuongeza nodi zaidi kadiri uwekaji unavyokua. Hazina za ndani za Git hubaki zinapatikana kama akiba ambazo nodi yoyote inaweza kujenga upya.
Kwa maelezo zaidi, soma nyaraka za muundo na nyaraka za hifadhi za mradi.
Sakinisha na unda gitai
1. Sakinisha mahitaji ya awali
Kwa sasa gitai inahitaji Linux au macOS, Go 1.26, zana za C, Meson, na Ninja. Ujenzi hukompile toleo lililojumuishwa la Git, kwa hiyo hakikisha zana asilia zinazohitajika za ujenzi zinapatikana kabla ya kuanza.
2. Kloni hazina
git clone https://github.com/feder-cr/git-ai.git
cd git-ai3. Unda jozi za programu
Endesha lengo la Make ili kuunda seva, CLI, na zana saidizi:
make buildJozi za programu zinazotokana huwekwa katika _build/bin. Ili kukagua CLI na amri zinazopatikana, endesha:
./_build/bin/graftEndesha quickstart
Hazina inajumuisha mfano unaoanzisha mazingira ya muda ya gitai yenye seva, daemon ya akiba, mawakala wawili, na operesheni ya kuweka mabadiliko:
examples/graft/quickstart.shHii ndiyo njia ya haraka zaidi ya kuona mtiririko mkuu wa kazi bila kuandaa hifadhidata ya kudumu, hifadhi ya vitu, au uwekaji. Kwa kuwa mfano huu hutumia saraka ya muda, unafaa zaidi kwa kujifunza na majaribio.
Endesha seva yako mwenyewe
1. Anza na usanidi wa mfano
Tumia examples/graft/config.toml kama mwanzo wa usanidi maalum wa seva. Seva inaweza kuanzishwa kwa jozi ya programu iliyojengwa:
_build/bin/gitaly serve config.tomlNdani ya mti wa chanzo, viendelezi vya upande wa seva vinaitwa Graft. Utaona jina hili katika sehemu ya usanidi ya [graft], CLI ya graft, kifurushi cha internal/graft, na nyaraka za Graft.
2. Ongeza hifadhidata na hifadhi ya vitu
Kwa uwekaji ambao hali ya hazina huhifadhiwa kwenye hifadhidata na hifadhi ya vitu, ongeza sehemu ya [graft.storage] kwenye usanidi. Mchakato wa uhamishaji uliowekwa kwenye nyaraka ni kuanza katika hali ya shadow, kuagiza hazina, kisha kubadilisha hadi hali ya authoritative.
Fuata mwongozo wa hifadhi kwa usanidi kamili na maelezo ya uhamishaji. Muundo wa hifadhi unaoungwa mkono hutumia SQLite au PostgreSQL kwa data ya uratibu na hifadhi ya faili, S3, GCS, au Azure kwa vifurushi vinavyotegemea anwani ya maudhui.
Fanya kazi na mabadiliko ya mawakala
Katika mtiririko wa kawaida wa Git, kila mfanyakazi anaweza kuiga hazina, kuendeleza ndani ya kifaa, na kutuma mabadiliko kwenye tawi linaloshirikiwa. gitai badala yake huruhusu mawakala kubaki wameunganishwa na seva na kuomba data wanayohitaji pekee.
Mawakala wanaweza kutumia nafasi za kazi adimu ili kupunguza njia zinazowekwa kwenye kifaa. Amri muhimu ni pamoja na:
graft cloneili kuweka kwenye kifaa mwonekano uliochaguliwa wa hazina.graft sparseili kuomba au kurekebisha njia zinazohitajika na kazi pekee.
Wakala anapokuwa tayari kuchangia, UserLand huunganisha mabadiliko hayo upya juu ya kilele cha sasa na kujaribu sasisho la compare-and-swap. Ikiwa mawakala kadhaa watawasilisha mabadiliko kwa wakati mmoja kwenye tawi moja, gitai inaweza kuweka shughuli hizo pamoja katika sasisho moja la rejeleo badala ya kumlazimisha kila wakala kupitia foleni tofauti ya uunganishaji.
Ikiwa uwasilishaji utazalisha mgongano, sanidi kitatuzi kulingana na nyaraka za utatuzi wa migongano. Kitatuzi kinaweza kutegemea mtoa huduma wa LLM, zana ya kiambatisho, au kutotumia mtoa huduma wa nje wa AI.
Chunguza seti za mabadiliko, hakiki na uthibitishaji
Historia ya seti za mabadiliko
Kila sasisho la rejeleo linalokubaliwa huwa ingizo katika kumbukumbu ya seti za mabadiliko. Ingizo hilo linajumuisha operesheni na mhusika, na kuwapa wateja rekodi iliyopangwa wanayoweza kuorodhesha au kuitazama moja kwa moja. Mtiririko huu pia unaweza kuendesha mawakala wa ufuatiliaji wanaofuatilia mabadiliko yanayohusiana na vipengele maalum.
Hakiki na sera
gitai inajumuisha hakiki zinazofaa kwa mawakala zenye kanuni za uidhinishaji wa kisemantiki. Kwa mfano, mabadiliko ya maoni pekee yanaweza kuhitaji idhini chache kuliko mabadiliko ya mantiki. Vidhibiti vya usalama wa mawakala pia vinajumuisha tokeni za kila wakala, orodha za RPC zinazoruhusiwa, na sera za matawi.
Soma nyaraka za hakiki na nyaraka za usalama wa mawakala kabla ya kufichua seva kwa watumiaji otomatiki.
Uthibitishaji baada ya kuwasilisha
Mtiririko wa graft-verify hujaribu kilele cha tawi baada ya mabadiliko kuwasilishwa. Jaribio likishindwa, unaweza kugawanya mabadiliko kwa kutumia bisect na kurudisha mabadiliko yaliyosababisha hitilafu. Hii huwezesha mtiririko ambapo ujumuishaji hufanyika mfululizo na mfumo hutambua mabadiliko yanayohusika na kilele kilichoharibika.
Tazama mwongozo wa uthibitishaji kwa mtiririko wa kazi na usanidi unaoungwa mkono.
Vidokezo vya kina vya uenezaji
- Tumia akiba kwa makusudi: ongeza
graft-cachewakati mawakala au kazi za CI zinahitaji ufikiaji wa haraka wa vitu visivyobadilika katika viwango vya akiba vya daemon au maeneo mbalimbali. - Tenganisha uratibu na uhifadhi wa vitu: tumia SQLite au PostgreSQL kwa seti za mabadiliko na marejeleo, na sanidi mfumo wa uhifadhi wa vitu kwa pakiti za hazina.
- Panua kwa nodi za ziada: nodi za seva zimeundwa kama akiba zinazoweza kujengwa upya, kwa hiyo kuongeza nodi hakuhitaji kila nodi iwe na hali huru yenye mamlaka.
- Soma nyaraka za uwasilishaji: mwongozo wa uwasilishaji na uwekaji wa pamoja unaeleza mtiririko wa compare-and-swap na masasisho ya wakati mmoja.
- Pitia vikwazo vya sasa: hili ni toleo la 0.1.0, miingiliano inaweza kubadilika kabla ya 1.0, na mapengo yanayojulikana kama ukusanyaji wa taka wa pakiti yameandikwa katika LIMITATIONS.md.
- Tumia nyaraka za muundo: PLAN.md hadi PLAN6.md zinaeleza mantiki na mageuzi ya utekelezaji.
Hitimisho
gitai hubadilisha modeli ya udhibiti wa chanzo inayozingatia seva ili itumike kwa hazina zinazofanyiwa kazi na mawakala wengi wa usimbaji kwa wakati mmoja. CLI na seva ya Graft hutoa ufikiaji wa data adimu, historia iliyo upande wa seva, uwasilishaji wa compare-and-swap, utatuzi wa migongano, kumbukumbu za seti za mabadiliko, hakiki, uthibitishaji, na uhifadhi unaoweza kupanuka.
Anza na make build na examples/graft/quickstart.sh, kisha hamia kwenye seva iliyosanidiwa na uhifadhi endelevu unapouelewa mtiririko wa kazi. Kwa mwongozo wa kina zaidi wa utekelezaji na uendeshaji, tumia Quickstart ya mradi, marejeleo ya usanidi, na nyaraka za usanifu.
