Øvingsprosjektet (også kalt students-repository) er en essensiell del av TDT4100. Når det kommer ut nye øvinger, blir det lagt til tester i øvingsprosjeket som man kan bruke til å sjekke at oppgaven er gjort riktig. I tillegg kommer løsningsforslag til øvingene i dette prosjektet, samt kode som brukes i forelesninger og øvingsforelesninger. Alt av dette ligger på Gitlab-siden til emnet som du finner her: https://gitlab.stud.idi.ntnu.no/tdt4100. Velg inneværende semester (eksempelvis v2024) og velg prosjektet tdt4100-students-24. Nye øvinger og eksempelkode hentes enkelt ned underveis som det legges ut i semesteret ved å klone dette prosjektet lokalt og hente ned ny kode via Git. Her følger en guide for å klone og sette opp Git med VSCode.

Vi har laget to alternativer for å sette opp øvingsprosjektet på PC-en din. Alternativ 1 er det enkleste, og anbefales dersom man ikke har kjennskap til git fra før. Med alternativ 2 har man mulighet til å ha koden sin synkronisert på IDIs servere, og kan enklere hente ned koden på forskjellige datamaskiner hvis man bruker det, men krever også at man er litt komfortabel med å bruke terminalen og krever noe mer jobb når man skal hente ned nye øvinger eller kode fra forelesning. Det er også fullt mulig å starte med alternativ 1, og heller bytte til alternativ 2 senere i semesteret. Da bare kopierer du over koden du allerede har laget i prosjektet lokalt på PC-en din til ditt nye prosjekt.

NB1:

Uansett hvilket av alternativene dere velger: 

Ikke endre eller legg til noe kode i andre mapper enn minegenkode og ovinger/src/main/java. Endringer på andre steder vil mest sannsynlig føre til merge conflicts, noe som ikke er ønskelig. Merge conflicts oppstår når samme kodelinje har blitt endret til to ulike ting i hver sin branch, og så blir git forvirret når koden skal samles igjen.

NB2: 

NTNU har bestemt at 2FA skal benyttes ved innlogging til deres systemer. Dette gjelder også for gitlab, og dere har et par ulike valgmuligheter for hvordan dere vil gjennomføre 2FA her. En oversikt over disse og guide for aktivering finner dere her. 





Installere Git


For å sette opp øvingsprosjektet må man først installere Git på maskinen. Om du allerede har installert Git, kan du hoppe over dette steget.

Windows

Gå til https://gitforwindows.org/, last ned installasjonsfilen ved å klikke "Download" og kjør gjennom installasjonen. 

Linux

sudo apt update


sudo apt install git

MacOS

  1. Installer Homebrew ved å følge instruksjoner på https://brew.sh/ 
  2. Kjør 

    brew install git


Alternativ 1 - Kloning av students-repository


Denne måten er den enkleste å sette opp prosjektet, men har en del begrensninger. Med dette alternativet vil man ikke kunne laste opp sin egen kode til Gitlab, og er avhengig av å ha alt av egen kode lokalt på PCen uten versjonskontroll. 


  1. Gå til https://gitlab.stud.idi.ntnu.no/tdt4100/v2024/tdt4100-students-24
  2. Klon repository til PCen din, for eksempel ved å trykke på knappen som vist under:
    1. Potensiell bug observert på Mac: Dersom ingenting dukker opp i VSCode når du gjør det som står over så kan du også klone repository ved å i stedet trykke på "Copy URL" under "Clone with HTTPS" på Gitlab:

      Deretter går du inn i VSCode og trykker på fanen "Source Control" og deretter "Clone Repository":

      For så å lime inn URL-en du kopierte i feltet som dukker opp øverst i vinduet:


  3. Velg en mappe på PCen der prosjektet skal klones. Mappen du velger blir foreldermappen til prosjektet.
  4. Klikk "Select Repository Location", og vent på at VS Code tar seg av resten. Når dette er ferdig så åpner du repoet du nettopp hentet i VSCode ved å trykke på en av knappene som dukker opp nederst i høyre hjørne.
  5. Du får nå potensielt opp følgende vindu nedenfor i VSCode. Her er det trygt å trykke på "Yes, I trust the authors" hvis du skulle få spørsmål:
  6. Du kan nå velge å installere de anbefalte tilleggene til VSCode til bruk i TDT4100 hvis du ikke allerede har gjort dette. Dette gjør du ved å trykke på "Install" når vinduet nedenfor dukker opp nederst i høyre hjørne:

    NB! Du MÅ ha Java Debugger-tillegget for å kunne kjøre koden din i VSCode. Den enkleste måten å sette opp denne er ved å trykke "Install" på vinduet ovenfor når du blir spurt om dette. Se evt. guide for oppsett av VSCode.

Hente ned oppdatert forelesningkode, nye øvinger og annet

For å oppdatere prosjektet når det har blitt lagt ut nye tester eller eksempelkode, trenger man bare å kjøre kommandoen git pull.

Dette kan man enten gjøre i Terminalen, eller direkte i VSCode ved å trykke på følgende under fanen "Source control":

NB: Dere vil ikke kunne pushe i dette alternativet

Som nevnt er det viktig at dere kun skriver kode i minegenkode og ovinger/src/main/java, for å unngå merge conflicts. Dere vil også i dette alternativet oppleve at etterhvert som dere oppretter nye filer, så vil counteren på source control-fanen øke. Hvis dere flytter musepekeren over denne fanen, vil det f.eks stå 15 pending changes. Dette er helt ok, og dere trenger ikke foreta noe for å fjerne counteren. I senere kurs (og alternativ 2) vil dere kunne pushe (lagre) deres endringer til gitlab/github, men dette har vi ikke åpnet for at dere gjør i dette alternativet.  


Alternativ 2 - Fork din egen versjon (Avansert)


I dette alternativet lager man sin egen kopi (fork) av øvingsprosjektet. Dette gir muligheten til å bruke git aktivt, og lagre sine egne endringer på Gitlab.


  1. Gå til https://gitlab.stud.idi.ntnu.no/tdt4100/v2024/tdt4100-students-24
  2. Klikk Fork (man må være logget inn på gitlab):


  3. Gi prosjektet et valgfritt navn og beskrivelse. Velg å lagre prosjektet under din egen private Project URL, og velg privat synlighetsnivå (slik at ikke øvingene dine ligger ut offentlig). 
    1. NB! Det er veldig viktig at du her velger visiblilty level "Private". Hvis ikke deles koden med andre som tar emnet, og du kan risikere å bli tatt i fusk på øving.

  4. Klikk "Fork Project" nederst på siden
  5. Gå til ditt nye repository på gitlab.
  6. Klon repository til PCen din, for eksempel ved å trykke på knappen som vist under:


    VS Code kommer til å spørre om brukernavn og passord til Gitlab. Har du aktivert tofaktor-autentisering, kan du ikke logge inn med passord, men må bruke en Personal Access Token og legge inn denne i stedet der du blir bedt om passord. Sjekk denne guiden for å se hvordan man oppretter en slik. 
    1. NB! Husk å legge til read_repository og write_repository i "scopes" på access tokenen.
  7. Velg en mappe på PCen der prosjektet skal klones. Mappen du velger blir foreldremappen til prosjektet.
  8. Klikk "Select Repository Location", og vent på at VS Code tar seg av resten. 
  9. Når du er inne i øvings-repoet får du potensielt opp følgende vindu nedenfor i VSCode. Her er det trygt å trykke på "Yes, I trust the authors" hvis du skulle få spørsmål:
  10. Du kan nå velge å installere de anbefalte tilleggene til VSCode til bruk i TDT4100 hvis du ikke allerede har gjort dette. Dette gjør du ved å trykke på "Install" når vinduet nedenfor dukker opp nederst i høyre hjørne:


Konfigurer remote

For å kunne hente ned ny kode for øvinger, forelesninger, løsningsforslag og lignende med et "forked" prosjekt, må vi først konfigurere originalprosjektet som remote i Git:

  1. Åpne en terminal og naviger til ditt "forked" prosjekt. (For noen tips til navigering i terminalen, sjekk denne siden)
    1. Dersom du allerede har åpnet dette prosjektet lokalt i VSCode så kan du trykke på Terminal i menylinjen og velge New Terminal for å komme til riktig mappe.
  2. Kjør kommandoen

    git remote add fagstab https://gitlab.stud.idi.ntnu.no/tdt4100/v2024/tdt4100-students-24.git
  3. Verifiser at remote ble lagt til riktig ved å kjøre 

    git remote show

    Hvis alt er satt opp riktig skal man nå se både "origin" og "fagstab":


    "Origin" er ditt personlige forked prosjekt, mens "fagstab" er knyttet til det originale prosjektet og er der ny kode fra forelesning, øvinger, etc. vil dukke opp.

Laste inn oppdateringer

For å få oppdateringer fra originalprosjektet inn i ditt prosjekt, må vi kjøre en "merge". 

Nødvendige endringer i originalprosjektet vil være på main-branchen, så dette er den eneste man trenger å forholde seg til. 

  1. Åpne en terminal og naviger til prosjektet ditt (evt. åpne terminalen inne i prosjektet ditt i VSCode).
  2. Først henter vi ned nyeste informasjon om originalprosjektet med denne kommandoen:

    git fetch fagstab
  3. For å få med de nyeste endringene kjører man denne kommandoen:

    git merge fagstab/main

    Den vil legge til de nyeste endringene fra originalprosjektet til den branchen du befinner deg på. Om du vil sørge for at ditt gitlab-prosjekt også er oppdatert, kjør git push. 


Potensielle feilmeldinger 

Når man laster inn øvingsprosjektet så kan det oppstå feil. Her ligger beskrivelse av og løsning på de feilmeldingene vi har oppdaget. Denne seksjonen vil bli oppdatert fortløpende. 

Cannot access class sun.security.action.GetProperty

Hvis du får en feilmelding tilsvarende denne:

     

Så kan dette løses ved å: 

  1. Åpne "command palette" i VS Code ( F1 eller Ctrl + Shift + P)
  2. Skriv: "Preferences: Open Settings (JSON)"
  3. Legg deretter inn:

     

         i settings.json filen.

     4.  Husk å trykk på omstart etter du har gjort endringen i settings.json.


  • No labels