november 10, 2020

Aaben sovs

Spekulerer du på at give noget tilbage til fællesskabet? Måske lidt arbejde på noget Aaben sovs [undersættelse af open source], og ved du ikke helt, hvordan du kommer igang?

Github findes der en orn'li syg stak open source projekter – faktisk er alle de projekter, du kan udsøge, i en eller anden forstand open source. Det er ikke sikkert at det enkelte projekts ejer(e) vil acceptere PR fra dig, men det er en anden ting.

Hov! PR?

Ja pull-requests er git's måde at sige: jeg har noget kode, som jeg godt kunne tænke mig blev en del af det her repo/det her projekt; er du frisk på at inkludere det?

TL;DR; Du kan læse en engelsk version her - om den er kortere og mere klar i spytten må du selv afgøre

Du skal have et login på github.com, men det havde du jo nok gættet :)

1: Find et open source projekt

Det første er at finde et open source project at arbejde (med) på. På de enkelte projekter ligger der ofte en stak 'issues' som man kan arbejde på. Det kan være forslag fra brugere, eller idéer fra brugere/ejere.

2: Fork projektet

Så skal du fork-e projektet. Dvs lave en version, der er magen til - blot placeret under dit login. Det gør det nemmere at arbejde med på især større projekter, hvor det godt kan være meget svært at få "ørenlyd". Knappen finder du i øverste højre hjørne.

Når du har fundet et projekt, og har trykke tpå fork knappen.

3: Klon projektet til din egen desktop

Nu har du så en 'kopi' af projektet. Den kan du så clone til din egen desktop, og det kan du gøre inde fra din editor, eller du kan gøre det fra kommandolinjen med

git clone https://github.com/din_profil/projektetsnavn

4: Navngiv et ny branch

Hvis du har set dig lun på en opgave, er den næste opgave en af de sværeste ved alt, der har med computere og programmering at gøre: navngivning af din "nye" branch! Fra kommandolinjen ser det sådan ud

 git checkout -b din_navngivning_her

5: Skab noget - ret en fejl, løs en opgave

Tilbage i din editor ændrer du nu det, der skal til for at opgaven bliver løst. Der er 2 ting at huske på her:

  1. Lav mange små commit's - nogen siger én per fil, du retter i - andre sværger mere til at commit'e efter hver del opgave, atter andre igen efter hver test. Find evt din egen stil, men lad være med at forfalde til kun at commit'e én gang! En commit består af 2 ting - først en tilføjelse (af en fil)

    git add en_fil

    og dernæst en indskrivning

    git commit -S -m "en kort beskrivelse"
  2. Husk at hvis det er et projekt af en vis "kaliber" vil du uden tvivl blive bedt om at bevise at du har løst opgaven, ved at stille en række tests op, som dokumenterer, at opgaven er løst - og at den i øvrigt forbliver løst, selv om nogen retter i noget kode et andet sted, på et andet tidspunkt; fordi der vil blive stillet de samme krav til dem, og når de kører alle tests, vil dine test brokke sig, hvis andres ændringer betyder at din løsning ikke længere duer! Smart ikke?

6: Nogen ændringer i mellemtiden

Måske er der kun gået få minutter mellem at du fork'er et projekt, og du commit'er din løsning, men i den globale landsby er der altid nogen, der er hurtigere end du ;)

Så du er nødt til at check'e op på det oprindelige projekt for at sikre dig at din lokale version er up-to-date. Det link jeg lige nævnte, beskriver præcist hvad der skal til, men jeg lister processen kort:

  1. opret en remote der peger på det originale projekt (kun nødvendig én gang)
  2. hent projektets aktuelle status - git fetch upstream ( upstream er blot det navn du har givet pegepinden)
  3. skift til dit eget main branch - den branch du push'er til din fork (ikke den branch du udvikler på)
  4. merge det originale projekts main branch - git merge upstream/main (upstream og main er igen betingede af dit og projektets valg af navne for din pegepind og projektets hoved branch)

6: Push din commit

Nu har du så de seneste ændringer med fra det originale projekt - og nu skal du så have din nye branch merged sammen med resten.

git merge din_nye_branch

Sker det uden nogen konflikter, kan du push'e dine commits til dit repo – fx fra kommandolinjen med kommandoen

git push origin

7: Endelig langt om længe! PR

Ja! Det kan sagtens forekomme omstændeligt, men forestil dig hvilket kaos, det har været, før Linus Torvalds skrev Git! (Retfærdigvis skal det siges at der var versionskontrol systemer før git, og de eksisterer skam også stadig – men git har med sine 70% taget broderparten)

Tilbage i web grænsefladen til github.com kan du aktivere "pull request" knappen.

Skriv derefter så godt du kan, hvad du (mener at du) har løst, og hvorfor du mener at din PR skal inkluderes.

Velbekomme :)