Programmering

Hva er GitHub? Mer enn Git-versjonskontroll i skyen

GitHub er i utgangspunktet en Git repository hosting-tjeneste, dvs. et skybasert kildekodestyring eller versjonskontrollsystem, men det er bare begynnelsen. I tillegg implementerer GitHub funksjoner for kodegjennomgang (pull-forespørsler, diffs og review-forespørsler), prosjektledelse (inkludert problemsporing og tildeling), integrasjoner med andre utviklerverktøy, teamadministrasjon, dokumentasjon og "sosial koding."

Noe som et nettsted for sosiale nettverk for programmerere, er GitHub et åpent miljø der programmerere kan dele og samarbeide fritt (til og med ad hoc) om åpen kildekode. GitHub gjør det enkelt å finne nyttig kode, kopiere arkiver til eget bruk og sende endringer til andres prosjekter. Som et resultat har GitHub blitt hjemmet til praktisk talt alle open source-prosjekter av hvilken som helst betydning.

Når jeg vil utforske et åpen kildekode-prosjekt, begynner jeg med å søke etter prosjektnavnet. Når jeg har funnet prosjektnettstedet, ser jeg etter koblingen til kodedepotet, og ni ganger av ti kommer jeg opp på GitHub.

Git versjonskontroll

Før vi kan forstå hva GitHub gjør og hvordan GitHub fungerer, må vi forstå Git. Git er et distribuert versjonskontrollsystem, opprinnelig skrevet av Linus Torvalds i 2005 for og med hjelp fra Linux-kjernesamfunnet. Jeg er ikke her for å selge deg på Git, så jeg vil spare deg for spielet om hvor raskt og lite og fleksibelt og populært det er, men du bør vite at når du kloner et Git-arkiv ("repo", for kort) du får hele versjonshistorikken på din egen datamaskin, ikke bare et øyeblikksbilde fra en gren om gangen.

Git startet som et kommandolinjeverktøy som passer til opprinnelsen i Linux-kjernefellesskapet. Du kan fortsatt bruke Git-kommandolinjen, hvis du vil, men du trenger ikke. I stedet for eller i tillegg til kommandolinjen, kan du bruke den gratis GitHub-klienten på Windows eller Mac, eller en hvilken som helst av et antall andre GUIer for Git, eller en kodeditor som integreres med Git. Alle disse alternativene er i utgangspunktet enklere å bruke enn kommandolinjen. Git-kommandolinjen er forhåndsinstallert på de fleste Mac- og Linux-systemer og støtter alle operasjoner; GUI-ene støtter vanligvis en ofte brukt delmengde av Git-operasjoner.

Git er forskjellig fra eldre versjonskontrollsystemer som Subversion ved at den distribueres i stedet for sentralisert. Det er også ganske raskt, spesielt siden de fleste operasjoner skjer på ditt lokale depot. Likevel gir bruk av Git et nivå av kompleksitet: forplikte kode til ditt lokale depot og skyve forpliktelsene dine til et eksternt lager er separate trinn. Når team glemmer dette (eller ikke ble lært om det), kan det føre til situasjoner der forskjellige utviklere jobber med kodebaser som har avviket.

Et eksternt Git-arkiv kan være på en server, eller det kan være på en annen utviklers maskin. Det muliggjør mange mulige arbeidsflyter for team. En vanlig arbeidsflyt innebærer å bruke et serverlager som det "velsignede" depotet, som bare gjennomgått, godt testet kode er forpliktet til, ofte gjennom en trekk forespørsel utstedt fra utviklerens depot.

GitHub-funksjonalitet

Jeg har allerede bemerket at GitHub er en skybasert Git-server for kodehosting og sosial koding, og at den implementerer funksjoner for kodegjennomgang (pull-forespørsler, diffs og review-forespørsler), prosjektledelse (inkludert problemsporing og tildeling), integrasjoner med andre utviklerverktøy, teamledelse og dokumentasjon.

Den siste nyvinningen innen sosial koding fra GitHub er forplikte medforfattere, som du oppnår ved å legge til en eller flere "co-authored-by" trailere på slutten av en forpliktende melding. Denne mekanismen påvirker ikke repoen kjerne per se, og endrer ikke hvordan repoen ser ut på vanlig Git, men på GitHub den krom vil vise flere forpliktelser i forpliktelseslisten, og gi hver medforfatter kreditt i sitt bidrag.

Hvis du ønsker det, kan du utvide GitHub ved hjelp av GitHub GraphQL API. Dette er en betydelig forbedring i forhold til GitHubs forrige API, som var basert på REST-samtaler.

GitHub Enterprise

GitHub.com er en cloud hosting-tjeneste som kan håndtere en rekke kontotype: gratis (kun offentlige repoer) og betalte ($ 7 per måned) utviklerkontoer, team ($ 9 per bruker per måned) og bedrifter ($ 21 per bruker per måned) ). Skulle du ønske å kjøre GitHub Enterprise lokalt eller i din egen skyforekomst på AWS, Microsoft Azure, Google Cloud Platform eller IBM Cloud, kan du gjøre det for samme pris på $ 21 per bruker per måned som en vertskapskonto. GitHub Enterprise legger til noen nyttige funksjoner, for eksempel meldinger i apper til brukere og tilgangsklarisering integrert med LDAP-kataloger, men gir opp GitHub.coms SLA på 99,95 prosent oppetid for vertskap for forretningskontoer.

GitHub vs. Bitbucket

GitHub er ikke den eneste hostede forbedrede Git-tjenesten, og GitHub Enterprise er ikke det eneste lokale produktet for bedrifter. Atlassian Bitbucket konkurrerer med dem begge, med litt lavere priser og med et gratis team på fem medlemmer som inkluderer ubegrensede private repoer og bruk av Bitbucket Pipelines for kontinuerlig integrasjon. GitHub er et mer populært nettsted for open source-prosjekter, og det har et mye større utvalg av open source-utviklere. Prisene på Bitbucket er gunstigere for små oppstart.

GitHub vs. GitLab

GitLab konkurrerer med både GitHub og Bitbucket, både vert og lokalt. På overflaten ser GitLab ut til å ha mer livssyklusfunksjonalitet enn de andre, men forskjellen fra Atlassian forsvinner for det meste hvis du inkluderer Jira når du vurderer Bitbucket. GitLab tilbyr Gold-plan skyfunksjoner til open source-prosjekter gratis, men den ekstra funksjonaliteten kompenserer egentlig ikke for det større open source-utviklermiljøet på GitHub.

GitHub Desktop

GitHub Desktop, vist nedenfor, gjør det enkelt å administrere GitHub.com og GitHub Enterprise-arkivene. Selv om det ikke implementeres alle funksjonene til Git-kommandolinjen og GitHub-web-GUI, den implementerer alle operasjonene du vil gjøre på daglig basis fra skrivebordet mens du bidrar til prosjekter. Vanligvis vil du klone repoer fra GitHub til GitHub Desktop, synkronisere dem etter behov, opprette grener for arbeidet ditt, forplikte arbeidet ditt, og av og til tilbakestille en eller flere forpliktelser.

For å jobbe med repoer som du mangler forpliktelses- og samarbeidsrettigheter for, starter du vanligvis med å forge repoen på GitHub og klone gaffelen til skrivebordet ditt. Deretter legger du til eventuelle grener du trenger i GitHub Desktop, utfører eventuelle endringer du ønsker, tester arbeidet ditt, skyver forpliktelsene tilbake til den eksterne forked repoen din, og til slutt genererer en pull-forespørsel til det overordnede prosjektet.

Du kan se Pull Request-knappen øverst til høyre i GitHub Desktop-grensesnittet. Du kan også se mange forpliktelser i Neo4j-prosjektet som var sammenslåing av grener eller trekkforespørsler. Det er typisk for åpen kildekode-prosjekter med få forpliktelser og mange bidragsytere.

Atom redaktør

Du kan bruke hvilken som helst programmeringsredigerer du vil redigere kode, inkludert GitHubs gratis, åpen kildekode, hackbar Atom-editor (vist nedenfor), som integreres godt med GitHub og GitHub Desktop. Du kan bruke Atom på MacOS, Windows eller Linux. Du kan åpne Atom fra GitHub Desktop ved å høyreklikke på depotet du vil bla gjennom eller redigere.

Atom leveres med rundt 90 pakker, fire UI-temaer og åtte syntaks-temaer. Du kan legge til 7000 pakker og 2000 temaer i installasjonen av Atom. Pakker kan støtte spesifikke programmeringsspråk, for eksempel TypeScript, eller legge til funksjonalitet, for eksempel Hydrogen, et interaktivt kodingsmiljø som støtter Python, R, JavaScript og andre Jupyter-kjerner.

Atom er bygget med HTML, JavaScript, CSS og Node.js integrasjon. Den kjører på Electron, et rammeverk for å bygge apper på tvers av plattformer ved hjelp av webteknologier. GitHub Desktop kjører også på Electron.

GitHub-prosjekter

Åpen kildekode-programvare trenger ofte måter å håndheve kvalitetskontroll på, mens de fortsatt godtar bidrag fra utenfor kjerneteamet. Behovet for bidragsytere er stort, men det er en vanskelig og potensielt farlig oppgave å bringe nye bidragsytere inn i prosjektet samtidig som kodebasen opprettholdes. Samtidig er behovet for tilbakemelding fra brukere av prosjektet også stort.

GitHub har en rekke mekanismer som kan bidra til å smøre hjulene til open source-prosjekter. For eksempel kan brukere legge til problemer til prosjektet på GitHub for å rapportere feil eller be om funksjoner. Noen andre systemer kaller disse billetter. Prosjektledere som arbeider med problemer kan generere oppgavelister, tildele problemer til bestemte bidragsytere, nevne andre interesserte bidragsytere slik at de får beskjed om endringer, legge til etiketter og legge til milepæler.

For å bidra til et prosjekt, begynner du i utgangspunktet fra et tema hode gren som inneholder de forpliktende endringene du vil ha lagt til i prosjektet utgangspunkt gren og initialiser a trekk forespørsel fra hovedgrenen, som vist nedenfor. Deretter skyver du forpliktelsene dine og legger dem til prosjektgrenen. Andre bidragsytere kan se gjennom de foreslåtte endringene, legge til gjennomgangskommentarer, bidra til diskusjonen om pull-forespørsel og legge til sine egne forpliktelser til pull-forespørselen.

Når alle involverte er fornøyd med de foreslåtte endringene, kan en kommisjonær slå sammen trekkforespørselen. Sammenslåingen kan bevare alle forpliktelsene, klemme alle endringer i en enkelt forpliktelse, eller omsette forpliktelsene fra hovedgrenen til grunngrenen. Hvis sammenslåingen genererer konflikter, kan du løse dem på GitHub eller bruke kommandolinjen.

Kodevurderinger på GitHub lar et distribuert team samarbeide asynkront. Nyttige GitHub-verktøy for korrekturlesere inkluderer forskjeller (den nedre halvdelen av skjermbildet nedenfor), historikk (den øvre halvdelen) og skyldvisningen (en måte å se utviklingen av en fil forpliktet av forpliktelse). Kodediskusjoner på GitHub går inn i kommentarer som presenteres i linje med kodendringene dine. Hvis de innebygde verktøyene ikke er tilstrekkelige for prosjektet ditt, kan du legge til verktøy for kodegjennomgang og kontinuerlig integrering fra GitHub-markedet. Marketplace-tillegg er ofte gratis for open source-prosjekter.

GitHub gists

Gists er spesielle GitHub-arkiver for å dele arbeidet ditt (offentlig) eller for å lagre arbeid for senere gjenbruk (hemmelig). De kan inneholde enkeltfiler, deler av filer eller fulle applikasjoner. Du kan laste ned gists, klone dem, forkaste dem og legge dem inn.

Offentlige lister kan bli oppdaget og funnet i søk. Du kan bruke nøkkelord for å begrense det du finner, inkludert prefikser for å begrense resultatene til gister fra bestemte brukere, gists med minst N stjerner, lister med spesifikke filnavn, og så videre.

Det er ikke mulig å søke i hemmelige gists, men alle med URL-adressen kan se dem. Hvis du virkelig vil at koden din skal beskyttes, bruk et privat depot.

Som vi har sett, tilbyr GitHub Git-arkiver som en tjeneste, sammen med funksjoner for kodegjennomgang, prosjektledelse, integrasjoner med andre utviklerverktøy, teamadministrasjon, sosial koding og dokumentasjon. Mens GitHub ikke er det eneste produktet i sin kategori, er det det dominerende depotet for programvareutvikling med åpen kildekode.

$config[zx-auto] not found$config[zx-overlay] not found