Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Per Austrin 2016-08-29 17:12

Visa < föregående | nästa >
Jämför < föregående | nästa >

Inlämning av labbar via Git

Introduktion till Git

Kursen DD1337 har flera matnyttiga länkar med information om Git här:
https://www.kth.se/social/course/DD1337/page/kurswiki-for-git-och-github/

Extra viktigt är dokumentet "KTH short tutorial", som förklarar hur man gör flera av stegen nedan.

Se denna tutorial för hur man skapar ett konto på KTH Git.  Utöver att skapa konto kommer du antagligen att vilja lägga till en publik SSH-nyckel till ditt konto, även detta beskrivs i förutnämnda guide.

Översikt över arbetsflöde i progp

För varje labb i kursen kommer du att få ett repo under organisationen "progp16".  Om ditt användarnamn t.ex. är "osquarulda", kommer du för labb "F1" få ett repo "osquarulda-F1" med sökväg https://gits-15.sys.kth.se/progp16/osquarulda-F1.

Du ska inte skriva direkt till detta repo, utan ska skapa en egen förgrening av det och sedan skicka in din labblösning som en hämtbegäran (Pull request) till ursprungs-repot.

Är jag inlagd i systemet?

En förutsättning för att kunna göra labbarna är att du är inlagd i systemet, så att repon skapas åt dig. 

  • Enklaste sättet att kontrollera att du är inlagd är att gå till
    https://gits-15.sys.kth.se/progp16/{USERNAME}-testlabb/
    där  {USERNAME} är ditt kth.se-användarnamn.  (Om du inte har stängt av e-post-notifikationer från git kommer du dessutom få e-post från Git när nya repon skapas åt dig.)
  • Om det inte finns något där så är du inte inlagd ännu:
    • Datan över studenter hämtas från rapp-systemet, så nästa steg är att kolla att du är registrerad på kursomgången progp16 där. 
    • Om du inte är registrerad på progp16 i rapp, kontakta studievägledningen och be dem omregistrera dig och lägga in dig i rapp.
    • När du är registrerad på progp16 i rapp, skicka ett mail till kursmailen progp-16@csc.kth.se om att du behöver få git-repon skapade åt dig.

Detaljerade instruktioner

För att testa flödet har du fått ett repo för en låtsas-labb "testlabb" som du kan använda för att experimentera.  Det är inget krav att du gör något med denna, men rekommenderas eftersom det hjälper dig bekanta dig med systemet.

Här följer nu detaljerade instruktioner för hur undertecknad (användarnamn "austrin") gör för att utföra och lämna in testlabben.

Förgrena repo

Det första steget är att föregrena repot.  I Git-UI:t kan en göra detta genom att klicka på Fork-knappen i repot:

Förgrena repo

Man får då välja vart man vill placera sin förgrening.  Jag väljer att placera den under mitt eget konto (@austrin).  Jag får då ett nytt repo som ser ut så här:

Förgrenat repo

Om jag vill kan jag byta namn på mitt förgrenade repo (under mitt personliga konto kanske det t.ex. är vettigare om repot heter "progp16-testlabb" istället för "austrin-testlabb", eftersom det redan ligger under användaren "austrin").  Detta kan jag göra under "Settings"-länken till höger (ovanför "SSH clone URL") i skärmdumpen ovan.

Ge tillgång till min labb-kompis

En viktig egenskap i git är att flera användare kan arbeta samtidigt mot samma filer på ett effektivt sätt.  Nu vill jag ge access till min labb-kompis till mitt förgrenade repo, så att vi kan arbeta på labb-uppgiften tillsammans.  Eftersom repot fortfarande ägs av progp16 och jag som student inte har admin-rättigheter där så måste jag be någon med admin-rättigheter om hjälp med detta.  Som tur är så är den automatiserade labbhandledaren Kodkod vaken dygnet runt och kan hjälpa till med detta.  För att be Kodkod om att lägga till min labb-kompis behöver jag skapa en "Issue" i det ursprungliga repot.  Jag går alltså till progp16/austrin-testlabb och klickar på "Issues" i menyn till höger, och hamnar då här:

Issues

För att skapa en ny issue klickar jag "New issue".  Som titel för denna nya issue anger jag "add collaborator", och i beskrivningen av issuet skriver jag ner Git-användarnamnet för min labb-kompis (säg, "dicander" om Marcus Dicander är min labb-kompis):

Ny issue

Jag klickar sedan "Submit new issue" för att öppna detta.  Inom några ögonblick kommer Kodkod fixa detta och lägga till min labb-kompis.  Om Kodkod inte tar hand om ärendet så har hon tagit en osanktionerad tupplur, kontakta progp-16@csc.kth.se så väcker vi henne.

När detta är gjort kommer min labb-kompis ha tillgång till uppströms-repot progp16/austrin-testlabb, och mitt förgrenade repo austrin/austrin-testlabb.  Jag kan göra detta antingen före eller efter jag förgrenar repot, det spelar ingen roll.

Klona repo och göra labben

Nu är det dags att klona repot och göra labben.  Detta beskrivs väl i den tidigare nämnda "KTH short tutorial", och vi hänvisar till den för detta.

Öppna hämtbegäran

Efter mina uppdateringar talar hemsidan för repot om för mig att den har några commits som inte finns i uppströms-repot som vi förgrenat ifrån (se bild nedan).  Jag öppnar nu en hämtbegäran genom att klicka på länken "Pull Request":

Öppna hämtbegäran, steg 1

Jag får nu upp en sida som jämför uppströms-repot med mitt förgrenade repo, och visar en sammanställning av vilka förändringar som jag håller på att skicka in:

Skapa hämtbegäran, steg 2.

Jag klickar på den stora gröna "Create pull request"-knappen, och får då upp en dialog där jag kan ge en titel och skriva en kort beskrivning av min hämtbegäran.  Jag ger titeln "Labblösning" och i beskrivningen skriver jag ned den information som labb-instruktionerna anger att jag ska skriva.  Tyvärr råkar jag dock glömma att ange inskicknings-ID för min Kattis-lösning, vilket resulterar i att jag får ett klagomål av den automatiserade labb-handledaren Kodkod:

Hämtbegäran med fel

Jag fixar till detta genom att redigera hämtbegäran-beskrivningen (klickar på den lilla penn-ikonen längst upp till höger i meddelandet).  När jag fixat beskrivningen behöver jag tala om för Kodkod att det är dags att granska inlämningen igen, vilket jag kan göra antingen genom att lägga till nya commits till mitt repo, eller genom att stänga och öppna om hämtbegäran.  Eftersom det inte finns någon ny kod eller annat material jag vill lägga till så stänger jag hämtbegäran (klickar "Close pull request" längst ned på sidan) och öppnar sedan om den (klickar på knappen "Reopen pull request" som finns på samma ställe där Close-knappen förut fanns).  Nu var Kodkod nöjdare!

Hämtbegäran godkänd av kodkod

Kodkod har nu markerat din hämtbegäran som redo för granskning, och nu kommer någon av labb-handledarna på kursen att ta en titt.  Detta kan resultera i att du får instruktioner om saker att komplettera, eller att du får en tid för att redovisa din labblösning.

För "testlabb" slutar dock resan här; labbhandledarna kommer inte att titta på den, och du får inte nöjet att redovisa den.

Begränsningar i när jag kan redovisa

När en labbhandledare granskat min inlämning och förhoppningsvis gett den OK kommer jag att bli inbokad för redovisning på ett redovisningspass.

Om det finns några tider under de närmaste labb-passen då jag inte har möjlighet att redovisa så lägger jag till denna information i min hämtbegäran.  Om jag inte anger några specifika tider då jag inte kan så antas det att jag har möjlighet att redovisa när som helst under de närmsta labb-passen.