
Ինչու Go-ի կոդը չպետք է կապել GitHub-ին
Go-ում ներմուծման ուղին միաժամանակ կոդի ներբեռնման հասցեն է, ուստի git-հոսթինգ փոխելը պահանջում է վերաշարադրել բոլոր ներմուծումները։ Ինժեներ Iain Cambridge-ը բացատրում է լուծումը։
Go-ն ծրագրավորման լեզուների շարքում անսովոր հատկություն ունի. փաթեթի ներմուծման ուղին նաև այն հասցեն է, որտեղից գործիքները ներբեռնում են դրա կոդը։ Եթե գրադարանը տեղակայված է github.com/example/thing հասցեում, այդ տողը բառացի կրկնվում է այն ամեն ֆայլում, որը ներմուծում է այն։ 2026 թվականի սեպտեմբերի 27-ին հրապարակված գրառման մեջ ինժեներ Iain Cambridge-ը պնդում է, որ այս հարմարությունը լուռ կապում է Go նախագիծը մեկ հոսթինգ մատակարարի հետ, և թիմերը պետք է մոդուլները տեղադրեն սեփական դոմենի ներքո։
Որտեղից է ծնվում կապվածությունը
Խնդրի էությունը նրանում է, որ git-հոսթի հասցեն դառնում է մոդուլի ուղին և կապում կոդը հենց այդ հոսթին։ Եթե պահոցը տեղափոխեք GitLab, Codeberg կամ սեփական սերվեր, ապա պետք է վերաշարադրել հին հասցեն հիշատակող յուրաքանչյուր ներմուծման ուղի, go.mod գրառում և replace հրահանգ, այլապես գործիքները կշարունակեն ներբեռնել հին պատճենը։ Հեղինակը գրում է, որ անցման ծախսն այնքան մեծ է, որ ընկերությունները պարզապես հրաժարվում են փոփոխությունից, և կոդը մնում է կապված GitHub-ին։
Նա նկարագրում է ընկերություն, որը միաժամանակ աշխատում էր GitLab-ի, GitHub-ի և Azure DevOps-ի վրա։ Կոդի տեղափոխումն այնքան աշխատատար էր, և թիմն այնքան քիչ ժամանակ ուներ, որ երեք հարթակները զուգահեռ պահելը ավելի հեշտ էր, քան դրանք միավորելը։ Արդյունքը շոշափելի էր. ընկերությունը միաժամանակ վճարում էր երեք հոսթինգ ծառայության համար։ Cambridge-ի խոսքով, հենց այդ փորձի պատճառով է ստեղծել Boneclone-ը, որը կմախքային կոդը միաժամանակ կրկնօրինակում է մի քանի git հոսթինգ հարթակներում։
Լուծումը սեփական դոմենի ներքո հրապարակվող մոդուլներն են, նույն սխեման, որն օգտագործում են go.uber.org-ը, go.mongodb.org-ը և հեղինակի go.iain.rocks-ը։ Ներմուծման ուղին դոմենն է, իսկ դրա հետևում նույն հասցեն կարող է ցույց տալ այնտեղ, որտեղ կոդն այժմ գտնվում է։ go.iain.rocks/boneclone այսօր ուղղվում է github.com/thetrueares/boneclone հասցեին, և եթե պահոցը տեղափոխվեր GitLab, օգտվողները փաթեթը կտեղադրեին նույն հրահանգով և ոչինչ չէին նկատի։ Հեղինակի կարծիքով՝ Go-ն օգտագործող յուրաքանչյուր առևտրային ծրագրային թիմ պետք է ներքին գրադարաններն ու փաթեթները կոչի հենց այդպես։
Դոմենը ձերն է, ոչ հոսթը
Մեխանիզմն արդեն ներկառուցված է լեզվում. երբ գործիքը ուղին պահանջում է go-get=1 պարամետրով, սերվերը վերադարձնում է փոքր HTML էջ՝ go-import մեթա-թեգով, որտեղ նշված է պահոցի հասցեն։ Հեղինակի մոտ գրառումը հետևյալն է. go.iain.rocks/boneclone git https://github.com/that-guy-iain/boneclone, իսկ կողքին go-source թեգն է, որն օգնում է խմբագրիչներին ֆայլերի հղումներ կառուցել։ Նրա Nginx-ի կոնֆիգուրացիան այդ էջը մատուցում է Go-ի գործիքներին, իսկ մարդ այցելուներին 301 կոդով վերահղում է GitHub։
Ինչպիսին է կոնֆիգուրացիան
Նույն պատմությունը վերաբերում է նաև CI-ին և հազվադեպ բացվող issue ձևանմուշներին. մատակարարից կախված կրծքանշանները, կոշտ գրված հասցեներից կառուցված ինքնաշխատ ստուգումները և փաստաթղթերում գրված հղումները առանձին ուղղում են պահանջում։ Սեփական դոմենը նախապես վերացնում է այդ աշխատանքի մեծ մասը, իսկ մատակարարի փոփոխությունը դառնում է ընդամենը մեկ մեթա-թեգի և մեկ վերահղման թիրախի խմբագրում։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։