Git setup ######### .. note:: **Hvis du bruker Windows må du dobbelsjekke at du bruker git bash som default terminal i VSCode.** Git bash er en del av https://gitforwindows.org/ som vi har installert tidligere. For å endre default terminal i VSCode må du gjøre følgende: 1. Åpne ny terminal. .. image:: open-new-terminal.png :scale: 70 % 2. Klikk på drop-down'en i terminalen. .. image:: wingitbash1.PNG :scale: 50 % 3. Klikk på "Select Default Shell". .. image:: wingitbash2.PNG :scale: 50 % 4. Velg "Git Bash". .. image:: wingitbash3.PNG :scale: 50 % 5. Om du får problemer når du prøver å kjøre filene i VSCode:: ..../python.exe: access denied så må du deaktivere Windows' egen versjon av Python. Søk **App execution aliases** eller **appkjøringsaliaser** og slå av de to som har med python å gjøre: .. image:: appexecution.png :scale: 80 % Konto på UiB Gitlab =================== Hvis du ikke allerede har gjort dette, lag en konto på UiB Gitlab. Instruksjoner finner du her: :ref:`uib-gitlab-konto` Bli med i INF100 gruppen ======================== Hvis du ikke allerede har gjort dette: 1. Når du er logget på GitLab, klikk denne linken: https://git.app.uib.no/ii/inf100/20h/students 2. Klikk på "Request Access" .. image:: git-group-access.png :scale: 50 % 3. Vi kjører et automatisk skript som legger deg til i gruppen, og lager et test-prosjekt for deg. Det kan ta **opp til 5 minutter** før test-prosjektet er synlig for deg under https://git.app.uib.no/dashboard/projects Testprosjekt ============ Du har to muligheter for å endre filene i dine prosjekter: 1. Rediger ditt prosjekt direkte på GitLab ------------------------------------------ 1. Gå til https://git.app.uib.no/dashboard/projects og klikk på testprosjektet ditt. 2. Her ser du hovedsiden for *repo*'et ditt. Vi har allerede laget to filer, ``README.md`` og ``hello.py``. Du kan editere dem her: 3. Klikk på ``hello.py``-filen. Klikk så på **Edit** 4. Endre innholdet litt, f.eks med flere print(). I *Commit Message*-feltet kan du legge inn en beskrivelse av dine endringer. Skriv f.eks ``Update hello.py with some test messages`` Klikk så på **Commit Changes**. Nå er endringene lagret i repoet. 5. Klikk **Edit** igjen, endre innholdet en gang til, og skriv f.eks ``Update hello.py again`` i *Commit Message*, så klikk **Commit Changes** for å lagre endringene. 6. I menyen til venstre, under *Repository*, klikk på *Graph*. Her ser du alle endringene (eller commit-er) du har gjort. Klikk deg gjennom alle endringene, ved å klikke på de røde dottene i grafen. Her ser du detaljer om hver endring, dette vil være nyttig senere i kurset. Det er ikke mulig å kjøre programmet direkte her. Derfor bruker man git vanligvis ved a *klone* en kopi av prosjektet til sin egen datamaskin: 2. Klone og redigere -------------------- Det finnes to måter for å hente koden fra serveren til din maskin: HTTPS og SSH. HTTPS-autentifisering er vanskelig å bruke med git.app.uib.no, derfor skal vi bruke SSH i kurset. Først må vi opprette en *SSH-nøkkel*, som serveren kan bruke for å identifisere maskinen din. Følg instruksene her: :ref:`ssh-key`. Når nøkkelen er lastet opp, er vi klar for *clone*: 1. På hovedsiden av prosjektet ditt finnes en **Clone**-knapp. Ta en kopi av lenken under *Clone with SSH* 2. I **VSCode** på din maskin, bruk *File* -> *Open* / *Open Folder* for å åpne en mappe du skal bruke for alle INF100-prosjekter. Du kan lage en ny mappe i dialogen, f.eks under *Documents* eller *Desktop*. 3. Åpne en ny terminal i VSCode, og skriv der:: git clone [lim inn lenken her] Første gang du bruker SSH, må du bekrefte server ID ved å skrive ``yes``. 4. Bruk *File* -> *Open* en gang til, for å åpne prosjektmappen, som nå ligger inn i den mappen fra før. 5. Nå kan du åpne ``hello.py``, og kjøre programmet. Så skal vi endre innholdet av ``hello.py`` litt mer, og lagre endringene i git. 6. Etter du har laget noen endringer, skriv følgende i terminalen:: git status ``hello.py`` vises i rødt. Det betyr at filen ble endret i forhold til den versjonen som finnes i git fra før. 7. Nå bruker vi :: git add hello.py for å velge hvilke filene skal være med i *commit*'et'. Sjekk med ``git status`` en gang til: nå ser vi grønt farge. 8. Så kan vi committe filen med:: git commit -m'Updated hello.py one more time, on my laptop' Om det kommer en feilmelding her, må vi lage et navn og epost-adresse som git skal bruke i log-historien. Det skjer bare den første gang vi bruker *commit*. Bruk ditt navn her! :: git config --global user.name "Eliza of Qwghlm" git config --global user.email "Eliza@example.com" git commit -m'Updated hello.py one more time, on my laptop' Nå er ``git status`` tom. 9. Vi kan se commit-graphen også her i terminalen med:: git log --graph Her kan vi se våre siste endringene. Om log-listen er ganske lang, kan man bruke ``q`` for å avslutte. 10. Endringene dine er committed i historien nå, men bare på din maskin. For å sende dem tilbake til serveren, bruker vi:: git push og så er endringene også synlig på prosjektsiden på git.app.uib.no. Du kan også bruke ``git pull`` for å hente endringer fra serveren. .. _ssh-key: SSH-nøkkel ========== .. note:: Når man lager en SSH-nøkkel, kan serveren identifisere den datamaskinen du bruker, og man trenger ikke å skrive inn passordet hver gang man tar kontakt med serveren. Vi må lage en nøkkel bare **en gang for hver maskin vi bruker**, og oppgi denne til GitLab. 1. Åpne opp Visual Studio Code, åpne så opp en terminal: **Terminal->New Terminal** 2. I terminalen, skriv:: ssh-keygen -t rsa -b 2048 Trykk enter til alle spørsmål (inkludert password). 3. Skriv så:: cat ~/.ssh/id_rsa.pub 6. Kopier outputet fra ``id_rsa.pub`` filen, det er din *public key* 7. På Gitlab, gå så til: https://git.app.uib.no/profile/keys 8. Lim inn din *public key* i det store tekstfeltet. 9. Gi den et navn, navnet skal indikere hvilken maskin nøkkelen kommer fra. Det kan f.eks hete *Min Etch-A-Sketch* 10. Klikk **Add key** .. image:: sshkey.png :scale: 100 % Vanlig *workflow* ================= .. note:: Den vanlige måten for å jobbe med et prosjekt er: 1. ``git clone``: henter et nytt prosjekt fra serveren til maskin 2. Editere programmet, testkjøring, osv. 3. ``git add``: alle filene som skal committes 4. ``git commit -m'Some good description for the log'``: lagrer endringene lokalt 5. ``git push``: sender til serveren 6. tilbake til 2. Vi kan alltid bruke ``git status`` og ``git log``. Dette er alt vi trenger for kurset, men om du har lyst å gå litt dypere kan vi anbefale - https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html - http://swcarpentry.github.io/git-novice