Ko te tukunga o te kaupapa mergiraf 0.4 kua whakaputahia, te whakawhanake i te taraiwa mo Git me te whakatinanatanga o te waahi o te whakakotahitanga e toru-ara. Kei te tautoko a Mergiraf ki te whakatau i nga momo pakanga hanumi ka taea te whakamahi mo nga momo reo hootaka me nga whakatakotoranga konae. Ka taea te karanga motuhake ki te mergiraf ki te hapai i nga papā ka puta mai i te wa e mahi ana me te Git paerewa, ka whakakapi ranei i te kaihautu hanumi i Git hei whakawhanui i nga kaha o nga whakahau penei i te hanumi, te whakahoki, te rebase me te here-pick. Ka tohatohahia te waehere i raro i te raihana GPLv3. Ko te putanga hou he taapiri tautoko mo nga reo Python, TOML, Scala me Typescript, tae atu ki nga mahi arotautanga.
Kei raro nei te whakamaarama taipitopito o nga raru kua whakatauhia ma te whakamahi i te mergiraf:
Ko te raupaparorohiko he tauira nui o te punaha tino uaua. Ko nga punaha matatini he mea kotahi - he COMPLEX - a kare e taea e koe te tumanako ko te whanonga uaua e hiahia ana koe ka puta tupono noa. Engari, ka whanake enei punaha i roto i te waa, i ia taahiraa, ka ata whakamatauria ia huringa i ia wahanga. Hei whakatutuki i tenei, ka hiahiatia he hanganga kua tautuhia me nga taputapu tika. Ko te kukuwhatanga o tetahi punaha matatini ka taea te kite he rakau tika, ko te putake ko te huinga kore mahi me ia pona—haunga te putake—ko te hua o te tono irakētanga ki tona matua.
I roto i te horopaki o nga hua, ka kiia ia node he "putanga," e tohu ana i te huinga o nga mahi me nga mahi anti-mahi. Ko nga huringa ki tenei huinga ka kiia he rerekee, ka hanga he tapa i roto i to maatau kauwhata acyclic. He waitara noa enei mahi; karekau ratou e whakaatu tika ana i nga ahuatanga o te whakahaere o nga punaha tinana, engari e whakaatu ana me pehea te mohio o nga kaihoko mohio ki te whaihua o aua punaha. Hei whakamaori i nga whakaaro ki roto i nga whakatinanatanga o te ao, me whakakorikori koe i o ringaringa ka ruku ki roto i nga *te rawaka* nga taipitopito taumata iti e taea ai te whakaatu me te whakamarama i te ahua o te mahi. I roto i te whanaketanga rorohiko, ko enei taumata-iti e tohuhia ana e te waehere puna.
Kia tere haere ta ratou waehere puna ki roto i te ahua e whakaatu ana i te whanonga e hiahiatia ana, me te tuhi i te huarahi i tae atu ai ratou ki reira, ka tohu nga kaiwhakaputa hötaka i a raatau mahi i runga i nga whakaahua me nga huringa. Ko te hopukanga e tohu ana i tetahi ahuatanga motuhake o tetahi hua me nga taipitopito taumata-iti katoa, engari ko te huringa hei tohu i te whakawhiti i waenga i nga whakaahua. I te nuinga o te wa ka whakaputahia nga whakaahua e nga huringa kotahi ki o ratau maatua, no reira ka tapaina enei whakaahua i nga wa katoa hei mahi i nga huringa i hanga ai, no reira ka whakamahia nga kupu whakawhiti.
I etahi wa ka puta he whakaahua na te maha o nga whakawhitinga - te whakakotahitanga. He uaua ki te mahi tahi, no reira ka karohia. Ko nga punaha whakahaere putanga puna tuwhera o naianei penei i a Git e whakarato ana i nga tino kaha mo te whakahaere rerenga mahi whanaketanga. Ka whakaaetia e nga kaiwhakawhanake ki te whakarite i nga whakaahua kia rite ki nga kauwhata acyclic kua whakahaua, ki te tuhi korero me te whakariterite ano ina hiahiatia.
Ma tenei mahi ka taea e nga kaiwhakawhanake te tuhi i tetahi hitori e whai kiko ana mo te kaupapa, he mea tino nui mo te patuiro me te whakautu i nga patai penei "He aha tenei korero taumata-iti (hei tauira, taurangi) i whakaurua?", "He aha te ōrau o taku takoha ki tenei kaupapa. ?”, “ Ko wai i taumanutia e te whakatinanatanga tohu tohu me te wa?”, “He aha te huringa taumata-iti i pakaru i tenei mahi (ahakoa te ahua kaore e tika, i tirohia e matou nga mea katoa!?)”
Ko nga punaha whakahaere putanga ka whakakiia tenei ki te ariā o te peka, he ariā taumata-iti ko te tikanga he waahanga piripono o te hitori taumata-iti o te kaupapa e whai kiko ana ki te kaiwhakawhanake. I te nuinga o te wa ka whakamahia nga peka mo nga whakatinanatanga motuhake o nga ahuatanga, i etahi wa ka hangaia nga manga maha mo nga whakatinanatanga kaitono rereke o te ahuatanga kotahi. Ma te whakamahi i nga rerengamahi manga (he mea tino auraki me te paerewa whanaketanga, e whakamahia ana ki nga waahi katoa, ki nga waahi katoa), ka taea e ia kaiwhakawhanake te whakahaere tika i nga peka taupatupatu o te kaupapa, he rereke te pakeketanga me te kounga o ia waahanga. Ma tenei ka taea e nga kaiwhakawhanake te whakakotahi i nga hua o a raatau ake mahi me etahi atu tangata me te kore e pato ano i nga mea katoa i ia wa.
I te nuinga o te wa, ka hangaia he peka matua hei tohu mo te hua "mana", mai i nga peka taha taha mo ia ahuatanga, he rite tonu (he mea pai i muri i nga mahi katoa) ka tukutahi me te peka matua, ka taea e nga kaihanga te mahi me te putanga hou o te hua me te whakatinana i nga ahuatanga e hiahia ana ratou kei te whakawhanakehia i tenei wa ma te rapu i nga raru ka puta mai i nga mahi a etahi atu kaiwhakawhanake.
I te wa e ngana ana ki te whakakotahi i nga mahi o nga whakaahua rereke (e rapu ana i tetahi tupuna noa, me te whakamahi i nga huringa e whakaputa ana i a raatau, i runga ake i tetahi atu, ka kiia tenei mahi ko te rebase, he rite tonu te whakakotahitanga ki te rebase, he hanga noa i te commit. he rereke te kauwhata, na te mea he mea whakararu ki a ratou ki te raweke, no reira ka ngana ratou ki te whakarere i nga hanumi hei pai mo nga rebases) ka puta nga raruraru. Ko nga punaha whakahaere putanga hou (VCS) e whakamahi ana i nga huringa o roto i te hanumi hātepe ka pakaru noa i nga konae ki nga rarangi takitahi, ka kiia ia raina he ahua me nga konae hei raupapa o aua mea, katahi ka tono i nga huringa hei whakakotahi i nga mea ka puta mai i te bioinformatics.
Kia aroha mai, karekau he hononga o tenei rarangi-i-raina o te waehere puna ki ona ihirangi. Ko tana painga anake ko te ngawari me te ao katoa. Ko te maiorooro ka arai ki nga taupatupatu, ko te puna tonu o te mahunga mo nga kaihanga. Ko te whakatau i nga raruraru me ata ako te kaiwhakawhanake i nga putanga e rua o te waehere, kaua ko nga waahanga kua tohua e te rarangi-i-raina whakatairite hātepe hei "huri" ranei "pakeke," engari ko te kaupapa katoa pea.
Me mohio te kaiwhakawhanake ki nga huringa, tuhia a ringatia te waehere hanumi, me te whakatau i nga taupatupatu. Ko nga raruraru ka tino raruraru ina he he te tautuhi i nga huringa a te taputapu raina-i-raina, he maha nga wa ka puta me nga huringa nui, tae atu ki nga mea iti penei i te whakahōputu waehere. Ki te kore e taea te whakamahi i nga huringa o muri mai ki te waehere hanumi-a-ringa, ka waiho hei moemoea tino kino. Ahakoa nga keehi whakamataku, ka mahi te raupapa-a-raina algorithm i te nuinga o te waa, ina koa ka ngana nga kaihanga kia kaua e raru. Ko tetahi huarahi ki te whakaiti i enei raru ko te tono kia tukatukahia nga waehere puna me nga taputapu canonicalization penei i te pango.
Ae ra, ko te otinga tika mo nga keehi whakamataku (a, i te nuinga o te waa, ehara mo ratou anake, he heuristic te raina-i-raina algorithm, ka taea te arahi ki te waehere pakaru, hei tauira, ko tetahi kaiwhakawhanake i whakaingoatia he taurangi, me tetahi atu i te wa ano ka tuhia he waahanga waehere hou ma te whakamahi i taua taurangi, karekau he paheketanga karekau he hanumi/rebasing i konei, engari ko te hua ka kore e mahi) - koinei te whakamahinga o te tauira o roto tika.
Ahakoa te mea ko te rangahau i tenei takiwa e haere tonu ana mo te 30 tau, a kua hua mai he maha o nga hua arumoni rangatira, kaore ano tenei rangahau i huri hei hua tuwhera whaihua tae noa ki naianei. Ko te nuinga o nga otinga rorohiko puna tuwhera i timata ki te whanake i te timatanga o te 2010s, me te aro nui ki te reo Java.
Ko te whakatinanatanga kore utu tino rongonui o taua waa, ko GumTree, i hangaia e te kairangahau me tona ahuatanga matauranga, i tuhia ki Java, kei a ia ano te ahua o roto o roto i mua i mua i te kaitirotiro rakau, he tuara hoki i runga i te kaitirotiro rakau me etahi atu taputapu mo te whakamaarama puna. waehere ki roto i nga whakaaturanga waitara. Ka taea e tenei punaha anake te whakaputa (i te ahua o te raarangi takahanga tuhinga, he API ano ka taea te karanga mai i tetahi reo e herea ana ki a Java) me te tiro i nga huringa. Heoi, mo te whakakotahi i nga huringa, me te maataki i nga konae rerekee i hangaia e ia, kaore e tika ana i waho o te pouaka (heoi, tera pea ka taea te utaina nga rerekee ma te API).
He mea iti ake te whakatinanatanga o te difftastic kua tuhia ki Rust, i runga i te kaitirotiro rakau, me te aro ki te whakaputa i nga rereketanga kua tohua ki roto i te papatohu. Ko tenei punaha e whai ana ki te tiro i nga rereketanga, kaore i te nuinga o te waa ki te hanumi i nga huringa, ki te whakamahi i nga taapiri ranei.
No tata nei te kaupapa mergiraf ka puta mai, a kei te kaha te whanake. Ko tenei taputapu, i tuhia ki te Rust (21 MiB!), He mea hanga ano ki runga rakau, kua waiho hei paerewa mo nga kaitoro wetereo kore-puoro i roto i nga taputapu whanaketanga pera i te LLVM kua riro hei arotau i nga whakaaturanga tohutohu taumata-iti. Kaore i rite ki ona kaiwhakataetae, ka whakaratohia e te mergiraf nga mahi ehara mo te whakaputa rerekee, engari mo te whakatau aunoa i nga pakanga hanumi. I raro i te hood, ka whakamahi a mergiraf i te whakatinanatanga o te algorithm e whakamahia ana i GumTree ki te whakaputa i nga papaki, a mo te tono, he whakatinanatanga o te algorithm e whakamahia ana i roto i te spork, he mea whakarite mo nga hanganga rakau.
Ko te raupapatanga o nga papanga ki roto i nga konae ka taea te tono i muri mai, engari kaore i te whakatinanahia (engari ka taea te whakatinana ma te poroporo i nga raarangi takahanga i hangaia e GumTree). Ko tetahi atu huarahi pai ki te whakamahi i nga rereketanga ko te whakamahi i nga rereketanga ehara i te mea na roto i nga papanga, engari ma te mahi whakahou o nga tūmau LSP, ka taea te kite i nga raruraru i te taumata kaupapa-whanui. Ka tautokona te whakakitenga mo nga papā.
Tauira i te mahi: tupuna noa "base.py" (ripa kuo, raina taapiri i te timatanga) foo = 1 def matua(): tā(foo + 2 + 3) "a.py" (ripa tonu kua kuhu, 2 rarangi taapiri i te timatanga, hei utu mo te kotahi, ka whakamahia te wharepukapuka hukapapa mo te ta patuiro, ka taapirihia te karaehe "baz": mai i te hukapapa kawemai ic foo = 1 def main(): ic(foo + 2 + 3) class baz: def __init__(self): """baz""" "b.py" (tauaru "foo" kua whakaingoatia ki te "pa", ka tukatukahia me te "pango" i muri i nga huringa, ka puta he nuku me nga waahi me etahi atu kua tapahia nga rarangi): pae = 1 def matua(): tā(pae + 2 + 3) Waea ./mergiraf hanumi ./base.py ./a.py ./b.py -x a.py -y b.py -s base.py -o ./res.py ka homai te hua e whai ake nei mai i te icecream kawemai ic pae = 1 def matua(): ic(pae + 2 + 3) class baz: def __init__ (whaiaro): """baz""" (mo te ta patuiro, ka whakamahia te whare pukapuka "icecream", ka whakaingoatia te taurangi "foo" ki te "pa", ka tukatukahia ki te "pango" i muri i nga huringa, ka puta he nuku - nga mokowā me nga raina taapiri kua tapahia, he ranunga o nga ripa me nga waahi mo te nuku, engari ko te ahua e whakaaetia ana).
Ko te kore o te taputapu ka kitea tonu. I te nuinga o te wa ka whirihorahia te hanga tuhinga ki roto i nga konae .editorconfig, me te whakarereke i te ahua o te ao, penei i te whakarereke i nga ripa ki nga mokowhiti me te tango i te momo pango pera i te b.py, ka haere tahi me nga huringa i roto i te .editorconfig. Na reira, mo te tono tika ake mo enei huringa, me whai whakaaro te taputapu mo te ahua "taunoa" o te ao, me te kaha ki te tango i nga tautuhinga mai i te ".editorconfig".
Source: opennet.ru
