Programmering

Hvad er GitHub? Mere end Git-versionskontrol i skyen

GitHub er kernen i en Git repository-hostingtjeneste, dvs. et skybaseret kildekodestyring eller versionskontrolsystem, men det er bare begyndelsen. Derudover implementerer GitHub funktioner til kodegennemgang (pullanmodninger, diffs og reviewanmodninger), projektstyring (inklusive problemsporing og tildeling), integrationer med andre udviklerværktøjer, teamadministration, dokumentation og "social kodning."

Noget som et socialt netværkssite for programmører, GitHub er et åbent miljø, hvor programmører frit kan dele og samarbejde (endda ad hoc) om open source-kode. GitHub gør det let at finde nyttig kode, kopiere arkiver til eget brug og indsende ændringer til andres projekter. Som et resultat er GitHub blevet hjemsted for stort set alle open source-projekter af enhver betydning.

Når jeg vil udforske et open source-projekt, starter jeg med at søge efter projektnavnet. Når jeg først har fundet projektwebstedet, ser jeg efter dets kodeopbevaringslink, og ni gange ud af 10 afvikler jeg på GitHub.

Git-versionskontrol

Før vi kan forstå, hvad GitHub gør, og hvordan GitHub fungerer, er vi nødt til at forstå Git. Git er et distribueret versionskontrolsystem, oprindeligt skrevet af Linus Torvalds i 2005 til og med hjælp fra Linux-kernesamfundet. Jeg er ikke her for at sælge dig på Git, så jeg sparer dig for spillet, hvor hurtigt og lille og fleksibelt og populært det er, men du skal vide, at når du kloner et Git-arkiv ("repo", kort) du får hele versionshistorikken på din egen computer, ikke kun et øjebliksbillede fra en gren ad gangen.

Git startede som et kommandolinjeværktøj, der passer til dets oprindelse i Linux-kernesamfundet. Du kan stadig bruge Git-kommandolinjen, hvis du vil, men du behøver ikke. I stedet for eller ud over kommandolinjen kan du bruge den gratis GitHub-klient på Windows eller Mac eller et hvilket som helst af et antal andre GUI'er til Git eller en kodeditor, der integreres med Git. Alle disse indstillinger er oprindeligt lettere at bruge end kommandolinjen. Git kommandolinjen er forudinstalleret på de fleste Mac- og Linux-systemer og understøtter alle operationer GUI'erne understøtter typisk en hyppigt anvendt delmængde af Git-operationer.

Git adskiller sig fra ældre versionskontrolsystemer som Subversion, idet det distribueres snarere end centraliseret. Det er også ret hurtigt, især da de fleste operationer sker på dit lokale arkiv. Ikke desto mindre tilføjer brug af Git et niveau af kompleksitet: begår kode til dit lokale lager og skubber dine forpligtelser til et eksternt lager er separate trin. Når hold glemmer dette (eller ikke blev lært om det), kan det føre til situationer, hvor forskellige udviklere arbejder med kodebaser, der er divergeret.

Et eksternt Git-lager kan være på en server, eller det kan være på en anden udviklers maskine. Det muliggør mange mulige arbejdsgange for teams. Én almindelig arbejdsgang involverer brug af et serveropbevaringssted som det "velsignede" opbevaringssted, som kun gennemgået, velafprøvet kode er forpligtet til, ofte gennem en træk anmodning udstedt fra en udviklers lager.

GitHub-funktionalitet

Jeg har allerede bemærket, at GitHub er en skybaseret Git-server til kodehosting og social kodning, og at den implementerer funktioner til kodegennemgang (pullanmodninger, diffs og reviewanmodninger), projektstyring (inklusive problemsporing og tildeling), integrationer med andre udviklerværktøjer, teamledelse og dokumentation.

Den seneste innovation inden for social kodning fra GitHub er forpligte medforfattere, som du opnår ved at tilføje en eller flere "co-authored-by" trailere i slutningen af ​​en meddelelse. Denne mekanisme påvirker ikke repoen kerne i sig selv og ændrer ikke, hvordan repoen ser ud på almindelig Git, men på GitHub den krom viser flere forpligtelser på listen over forpligtelser og giver hver medforfatter kredit i hans eller hendes bidragsgraf.

Hvis du ønsker det, kan du udvide GitHub ved hjælp af GitHub GraphQL API. Dette er en betydelig forbedring i forhold til GitHubs tidligere API, som var baseret på REST-opkald.

GitHub Enterprise

GitHub.com er en cloud-hostingtjeneste, der kan håndtere en række kontotype: gratis (kun offentlige repos) og betalte ($ 7 pr. Måned) udviklerkonti, teams ($ 9 pr. Bruger pr. Måned) og virksomheder ($ 21 pr. Bruger pr. Måned) ). Hvis du ønsker at køre GitHub Enterprise lokalt eller i din egen skyforekomst på AWS, Microsoft Azure, Google Cloud Platform eller IBM Cloud, kan du gøre det for den samme $ 21 pr. Bruger pr. Måned som en hostet forretningskonto. GitHub Enterprise tilføjer et par nyttige funktioner, såsom in-app-meddelelser til brugere og adgangsklargøring integreret med LDAP-mapper, men opgiver GitHub.com's 99,95 procent oppetid SLA til hostede forretningskonti.

GitHub vs. Bitbucket

GitHub er ikke den eneste hostede forbedrede Git-tjeneste, og GitHub Enterprise er ikke det eneste lokale produkt for virksomheder. Atlassian Bitbucket konkurrerer med dem begge med lidt lavere priser og med et gratis team på fem medlemmer, der inkluderer ubegrænsede private repos og brugen af ​​Bitbucket Pipelines til kontinuerlig integration. GitHub er et mere populært sted for open source-projekter, og det har en meget større pool af open source-udviklere. Bitbucket's prisfastsættelse er mere gunstig for små startups.

GitHub vs. GitLab

GitLab konkurrerer med både GitHub og Bitbucket, både hostet og lokalt. På overfladen ser GitLab ud til at have mere livscyklusfunktionalitet end de andre, men forskellen fra Atlassian forsvinder for det meste, hvis du inkluderer Jira, når du vurderer Bitbucket. GitLab tilbyder Gold-plan cloud-funktioner til open source-projekter gratis, men den ekstra funktionalitet kompenserer ikke rigtig for det større open source-udviklerfællesskab på GitHub.

GitHub Desktop

GitHub Desktop, vist nedenfor, gør det nemt at administrere dine GitHub.com- og GitHub Enterprise-arkiver. Selvom det ikke implementeres alle funktionerne i Git-kommandolinjen og GitHub-web-GUI'en, implementerer den alle de operationer, du udfører dagligt fra dit skrivebord, mens du bidrager til projekter. Typisk vil du klone repos fra GitHub til GitHub Desktop, synkronisere dem efter behov, oprette grene til dit arbejde, begå dit arbejde og lejlighedsvis vende tilbage til en eller flere forpligtelser.

For at arbejde med repos, hvor du mangler forpligtelses- og samarbejdsrettigheder, starter du typisk med at gaffel repoen på GitHub og klone gaffelen til dit skrivebord. Derefter tilføjer du de filialer, du har brug for i GitHub Desktop, foretager de ændringer, du ønsker, tester dit arbejde, skubber forpligtelserne tilbage til din fjernbetjente repo og genererer endelig en pull-anmodning til det overordnede projekt.

Du kan se knappen Pull Request øverst til højre på GitHub Desktop-grænsefladen. Du kan også se mange forpligtelser i Neo4j-projektet, der var fletninger af filialer eller pull-anmodninger. Det er typisk for open source-projekter med få forpligtelser og mange bidragydere.

Atom redaktør

Du kan bruge enhver programmeringseditor, du kan lide, til at redigere kode, inklusive GitHubs gratis, open source, hackbare Atom-editor (vist nedenfor), som integreres godt med GitHub og GitHub Desktop. Du kan bruge Atom på MacOS, Windows eller Linux. Du kan åbne Atom fra GitHub Desktop ved at højreklikke på det lager, du vil gennemse eller redigere.

Atom leveres med ca. 90 pakker, fire UI-temaer og otte syntaks-temaer. Du kan tilføje en af ​​7.000 pakker og 2.000 temaer til din installation af Atom. Pakker kan understøtte specifikke programmeringssprog, såsom TypeScript, eller tilføje funktionalitet, såsom Hydrogen, et interaktivt kodemiljø, der understøtter Python, R, JavaScript og andre Jupyter-kerner.

Atom er bygget med HTML, JavaScript, CSS og Node.js integration. Det kører på Electron, en ramme til opbygning af applikationer på tværs af platforme ved hjælp af webteknologier. GitHub Desktop kører også på Electron.

GitHub-projekter

Open source-softwareprojekter har ofte brug for måder til at håndhæve kvalitetskontrol, mens de stadig accepterer bidrag uden for kerneteamet af forpligtelser. Behovet for bidragsydere er enormt, men det er en vanskelig og potentielt farlig opgave at bringe nye bidragsydere ind i projektet, samtidig med at kodebasens integritet opretholdes. Samtidig er behovet for feedback fra brugere af projektet også stort.

GitHub har en række mekanismer, der kan hjælpe med at smøre hjulene til open source-projekter. For eksempel kan brugere tilføje problemer til projektet på GitHub for at rapportere fejl eller anmode om funktioner. Nogle andre systemer kalder disse billetter. Projektledere, der arbejder med problemer, kan generere opgavelister, tildele problemer til bestemte bidragsydere, nævne andre interesserede bidragydere, så de får besked om ændringer, tilføje etiketter og tilføje milepæle.

For at bidrage til et projekt starter du grundlæggende fra et emne hoved gren, der indeholder de forpligtede ændringer, som du vil føje til projektet grundlag gren og initialiser en træk anmodning fra hovedgrenen, som vist nedenfor. Derefter skubber du dine forpligtelser og føjer dem til projektgrenen. Andre bidragsydere kan gennemgå dine foreslåede ændringer, tilføje gennemgangskommentarer, bidrage til diskussionen om pullanmodning og tilføje deres egne forpligtelser til pullanmodningen.

Når alle involverede er tilfredse med de foreslåede ændringer, kan en kommissær fusionere pull-anmodningen. Fusionen kan bevare alle forpligtelser, squash alle ændringer i en enkelt forpligtelse eller basere forpligtelserne fra hovedgrenen til basisgrenen. Hvis fletningen genererer konflikter, kan du løse dem på GitHub eller ved hjælp af kommandolinjen.

Kodevurderinger på GitHub tillader et distribueret team at samarbejde asynkront. Nyttige GitHub-værktøjer til korrekturlæsere inkluderer forskelle (den nederste halvdel af skærmbilledet nedenfor), historie (den øverste halvdel) og skyldvisningen (en måde at se udviklingen af ​​en fil på ved hjælp af commit). Kodediskussioner på GitHub går ind i kommentarer, der præsenteres inline med dine kodeændringer. Hvis de indbyggede værktøjer ikke er tilstrækkelige til dit projekt, kan du tilføje kodegennemgang og kontinuerlige integrationsværktøjer fra GitHub-markedet. Marketplace-tilføjelser er ofte gratis til open source-projekter.

GitHub gists

Gists er specielle GitHub-arkiver til deling af dit arbejde (offentligt) eller til at gemme arbejde til senere genbrug (hemmelighed). De kan indeholde enkeltfiler, dele af filer eller fulde applikationer. Du kan downloade gists, klone dem, forkæle dem og integrere dem.

Offentlige lister kan findes og findes i søgninger. Du kan bruge nøgleord til at indsnævre det, du finder, inklusive præfikser for at begrænse resultaterne til gister fra bestemte brugere, gists med mindst N stjerner, gists med specifikke filnavne og så videre.

Det er ikke muligt at søge i hemmelige gists, men alle med URL-adressen kan se dem. Hvis du virkelig ønsker, at din kode skal beskyttes, skal du bruge et privat lager.

Som vi har set leverer GitHub Git-arkiver som en service sammen med funktioner til kodegennemgang, projektstyring, integrationer med andre udviklerværktøjer, teamadministration, social kodning og dokumentation. Mens GitHub ikke er det eneste produkt i sin kategori, er det det dominerende lager for open source softwareudvikling.