Što je GitHub? Više od kontrole verzije Gita u oblaku

GitHub je u srcu usluga hostinga Git repozitorija, tj. Sustav za upravljanje izvornim kodom ili sustav za kontrolu verzija zasnovan na oblaku, ali to je tek početak. Osim toga, GitHub implementira značajke za pregled koda (zahtjevi za povlačenjem, razlike i zahtjevi za pregled), upravljanje projektima (uključujući praćenje i dodjeljivanje problema), integracije s drugim razvojnim alatima, upravljanje timovima, dokumentaciju i "socijalno kodiranje".

Nešto poput web mjesta za društvene mreže za programere, GitHub je otvoreno okruženje u kojem programeri mogu slobodno dijeliti i surađivati ​​(čak i ad hoc) na otvorenom izvornom kodu. GitHub olakšava pronalaženje korisnog koda, kopiranje spremišta za vlastitu upotrebu i podnošenje promjena na tuđim projektima. Kao rezultat toga, GitHub je postao dom gotovo svih projekata otvorenog koda od bilo koje važnosti.

Kad god želim istražiti projekt otvorenog koda, započinjem s traženjem naziva projekta. Jednom kad pronađem web stranicu projekta, potražim vezu do spremišta koda i devet puta od 10 završim na GitHubu.

Git kontrola verzije

Prije nego što shvatimo što GitHub radi i kako GitHub radi, moramo razumjeti Git. Git je distribuirani sustav kontrole verzija, koji je izvorno napisao Linus Torvalds 2005. godine i uz pomoć zajednice Linux jezgre. Nisam ovdje da bih vas prodavao na Gitu, pa ću vas poštedjeti rasprave o tome koliko je brz, malen, fleksibilan i popularan, ali trebali biste znati da kad klonirate Git spremište ("repo", kratko) na vlastitom računalu dobivate cijelu povijest verzija, a ne samo snimku iz jedne grane odjednom.

Git je započeo kao alat naredbenog retka, što odgovara njegovom podrijetlu u zajednici Linux kernela. Ako želite, i dalje možete koristiti naredbeni redak Git, ali ne morate. Umjesto ili pored naredbenog retka, možete koristiti besplatni GitHub klijent na sustavu Windows ili Mac, ili bilo koji od niza drugih GUI-ja za Git ili uređivač koda koji se integrira s Gitom. Sve ove opcije u početku je jednostavnije koristiti od naredbenog retka. Naredbeni redak Git dolazi predinstaliran na većinu Mac i Linux sustava i podržava sve operacije; GUI obično podržavaju često korišteni podskup Git operacija.

Git se razlikuje od starijih sustava upravljanja verzijama poput Subverzije po tome što se distribuira, a ne centralizira. Također je prilično brz, pogotovo jer se većina operacija događa na vašem lokalnom spremištu. Ipak, upotreba Gita dodaje razinu složenosti: predavanje koda u vaše lokalno spremište i guranje vaših predavanja u udaljeno spremište zasebni su koraci. Kada timovi to zaborave (ili o tome nisu bili poučeni), to može dovesti do situacija u kojima različiti programeri rade s bazama koda koje su se razišle.

Udaljeno spremište Git može biti na poslužitelju ili na stroju drugog programera. To omogućava mnogo mogućih tijekova rada za timove. Jedan uobičajeni tijek rada uključuje upotrebu spremišta poslužitelja kao "blagoslovljenog" spremišta, kojemu se predaje samo pregledani, dobro testirani kôd, često putem zahtjeva za povlačenjem izdanog iz spremišta programera.

GitHub funkcionalnost

Već sam primijetio da je GitHub Git poslužitelj zasnovan na oblaku za hosting koda i socijalno kodiranje te da implementira značajke za pregled koda (povlačenje zahtjeva, razlike i zahtjevi za pregled), upravljanje projektima (uključujući praćenje problema i dodjelu), integracije s drugim razvojnim alatima, upravljanjem timovima i dokumentacijom.

Najnovija inovacija u društvenom kodiranju s GitHub-a su koautori predavanja , što postižete dodavanjem jedne ili više najava "u suautorstvu" na kraj poruke o urezivanju. Ovaj mehanizam sam po sebi ne utječe na repo jezgru i ne mijenja način na koji repo izgleda na običnom Gitu, ali na GitHub-u chrome će prikazati više predavača na popisu urezivanja i svakom suautoru dodijeliti priznanje u njegovom ili njezinom obliku graf doprinosa.

Ako želite, možete proširiti GitHub koristeći GitHub GraphQL API. Ovo je značajno poboljšanje u odnosu na prethodni API GitHub-a koji se temeljio na pozivima REST.

GitHub Enterprise

GitHub.com usluga je hostinga u oblaku koja može obraditi niz vrsta računa: besplatni (samo javni repo poslovi) i plaćeni (7 USD mjesečno) računi programera, timovi (9 USD po korisniku mjesečno) i tvrtke (21 USD po korisniku mjesečno) ). Ako želite pokrenuti GitHub Enterprise lokalno ili u vlastitoj instanci oblaka na AWS-u, Microsoft Azure-u, Google Cloud Platform-u ili IBM Cloud-u, to možete učiniti za istu cijenu od 21 USD po korisniku mjesečno kao hostirani poslovni račun. GitHub Enterprise dodaje nekoliko korisnih značajki, kao što su razmjena poruka u aplikacijama s korisnicima i omogućavanje pristupa integriranih s LDAP direktorijima, ali odustaje od 99,95-postotnog SLA usluge GitHub.com za radne račune s hostom.

GitHub vs. Bitbucket

GitHub nije jedina hostirana poboljšana Git usluga, a GitHub Enterprise nije jedini lokalni proizvod za tvrtke. Atlassian Bitbucket natječe se s obojicom, s nešto nižim cijenama i s besplatnim petočlanim nivoom tima koji uključuje neograničene privatne repo-posjete i upotrebu Bitbucket Pipelinesa za kontinuiranu integraciju. GitHub je popularnije mjesto za projekte otvorenog koda i ima puno veći bazen programera otvorenog koda. Bitbucket cijene povoljnije su za male startupe.

GitHub vs. GitLab

GitLab se natječe s GitHubom i Bitbucketom, i domaćim i lokalnim. Izgleda da GitLab ima više funkcionalnosti životnog ciklusa od ostalih, ali razlika od Atlassisa uglavnom nestaje ako uključite Jira kada procjenjujete Bitbucket. GitLab nudi značajke oblaka Gold-plan za projekte otvorenog koda besplatno, ali ta dodatna funkcionalnost zapravo ne kompenzira veću zajednicu programera otvorenog koda na GitHubu.

GitHub radna površina

GitHub Desktop, prikazan u nastavku, olakšava upravljanje vašim GitHub.com i GitHub Enterprise spremištima. Iako ne implementira sve značajke Git naredbenog retka i GitHub web GUI-ja, implementira sve radnje koje ćete svakodnevno obavljati sa svoje radne površine, dok doprinosite projektima. Tipično ćete klonirati repo datoteke s GitHub-a na GitHub Desktop, sinkronizirati ih prema potrebi, stvoriti grane za svoj posao, predati svoj posao i povremeno vratiti jedan ili više predavanja.

Da biste radili s repo poslovima za koje vam nedostaju privilegije predavanja i suradnje, obično započnete forsiranjem repoa na GitHub i kloniranjem vilice na radnu površinu. Zatim dodate sve grane koje su vam potrebne u GitHub Desktop, uvršćujete sve promjene koje želite, testirate svoj rad, vraćate ureze natrag u udaljeni račvasti repo i na kraju generirate zahtjev za povlačenjem nadređenog projekta.

Gumb Pull Request možete vidjeti u gornjem desnom dijelu sučelja GitHub Desktop. Također možete vidjeti mnoge predaje u projektu Neo4j koji su bili spajanja grana ili zahtjevi za povlačenjem. To je tipično za projekte otvorenog koda s malo prijavitelja i mnogim suradnicima.

Uređivač Atoma

Možete koristiti bilo koji programski uređivač koji želite uređivati ​​kôd, uključujući GitHub-ov besplatni, otvoreni izvor, hakerski uređivač Atom (prikazan u nastavku), koji se dobro integrira s GitHub-om i GitHub Desktop-om. Atom možete koristiti na MacOS-u, Windows-u ili Linuxu. Atom možete otvoriti s GitHub Desktop desnim klikom na spremište koje želite pregledavati ili uređivati.

Atom se isporučuje s oko 90 paketa, četiri teme korisničkog sučelja i osam tema sintakse. U svoju instalaciju Atoma možete dodati bilo koji od 7000 paketa i 2000 tema. Paketi mogu podržati određene programske jezike, kao što je TypeScript, ili dodati funkcionalnost, poput vodika, interaktivnog okruženja za kodiranje koje podržava Python, R, JavaScript i druge Jupyterove jezgre.

Atom je izgrađen s integracijom HTML-a, JavaScript-a, CSS-a i Node.js-a. Radi na Electronu, okviru za izgradnju aplikacija s više platformi pomoću web tehnologija. GitHub Desktop također radi na Electronu.

GitHub projekti

Programi otvorenog koda često trebaju načine za provođenje kontrole kvalitete, a istovremeno prihvaćaju doprinose izvan osnovnog tima obveznika. Potreba za suradnicima je ogromna, ali uvođenje novih suradnika u projekt uz održavanje integriteta kôdne baze je težak i potencijalno opasan pothvat. Istodobno, potreba za povratnim informacijama od korisnika projekta je također ogromna.

GitHub ima niz mehanizama koji mogu pomoći u podmazivanju kotača projekata otvorenog koda. Na primjer, korisnici mogu dodati probleme projektu na GitHub-u kako bi prijavili pogreške ili zatražili značajke. Neki drugi sustavi nazivaju ove karte . Voditelji projekata koji rade s problemima mogu generirati popise zadataka, dodijeliti probleme određenim suradnicima, spomenuti druge zainteresirane suradnike kako bi bili obaviješteni o promjenama, dodati oznake i dodati prekretnice.

Da biste pridonijeli projektu, u osnovi krećete od grane glave teme koja sadrži predane promjene koje želite dodati osnovnoj grani projekta i inicijalizirate zahtjev za povlačenjem iz grane glave, kao što je prikazano u nastavku. Zatim gurnete svoje obveze i dodate ih u granu projekta. Ostali suradnici mogu pregledati vaše predložene izmjene, dodati komentare na pregled, doprinijeti raspravi o zahtjevu za povlačenjem i dodati vlastite obveze u zahtjev za povlačenjem.

Jednom kada su svi uključeni zadovoljni predloženim izmjenama, počinitelj može spojiti zahtjev za povlačenjem. Spajanjem se mogu sačuvati svi urezi, ugušiti sve promjene u jedan urezan oblik ili se prekomjerno temeljiti urezivanja iz glavne grane u osnovnu granu. Ako spajanje generira sukobe, možete ih riješiti na GitHubu ili pomoću naredbenog retka.

Pregledi koda na GitHub-u omogućavaju distribuiranom timu asinkronu suradnju. Korisni GitHub alati za recenzente uključuju razlike (donja polovica snimke zaslona u nastavku), povijest (gornja polovica) i prikaz krivice (način da se vidi evolucija urezivanja datoteke urezivanjem). Rasprave o kodu na GitHubu uključuju komentare koji su predstavljeni u redu s vašim promjenama koda. Ako ugrađeni alati nisu dovoljni za vaš projekt, možete dodati alate za pregled koda i kontinuirane integracije s tržišta GitHub. Dodaci na tržištu često su besplatni za projekte otvorenog koda.

GitHub suštine

Gists su posebna GitHub spremišta za dijeljenje vašeg rada (javno) ili za spremanje djela za kasniju ponovnu upotrebu (tajno). Mogu sadržavati pojedinačne datoteke, dijelove datoteka ili cjelovite programe. Možete preuzeti sažetke, klonirati ih, rastaviti i ugraditi.

Javne materije mogu se otkriti i pronaći u pretragama. Pomoću ključnih riječi možete suziti ono što pronađete, uključujući prefikse da biste rezultate ograničili na spiskove određenih korisnika, na mape s najmanje N zvjezdica, na mape s određenim imenima datoteka itd.

Tajne suštine nije moguće pretraživati, ali ih može vidjeti svatko tko ima URL. Ako stvarno želite da vaš kôd bude zaštićen, upotrijebite privatno spremište.

Kao što smo vidjeli, GitHub pruža Git spremišta kao uslugu, zajedno sa značajkama za pregled koda, upravljanje projektima, integracije s drugim razvojnim alatima, upravljanje timovima, socijalno kodiranje i dokumentaciju. Iako GitHub nije jedini proizvod u svojoj kategoriji, on je dominantno spremište za razvoj softvera otvorenog koda.