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 fork 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:
    • För att repon ska kunna skapas åt dig krävs att du har ett konto på KTH Git.  Ett konto skapar du genom  att helt enkelt gå till https://gits-15.sys.kth.se och logga in med ditt KTH-Id.
    • 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 har ett konto på KTH Git och ä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.

Ge tillgång till min labb-kompis

OBS! Detta måste göras innan du forkar repot.  En tidigare version av de här instruktionerna hävdade felaktigt att det kunde göras efteråt.

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 repo, så att vi kan arbeta på labb-uppgiften tillsammans.  Eftersom repot ä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 forkade repo austrin/austrin-testlabb.

Forka repo

OBS! Om du vill ge tillgång till din labb-kompis måste du göra detta innan du forkar repot (se instruktioner ovan).  En tidigare version av de här instruktionerna hävdade felaktigt att det kunde göras efteråt.

Det första steget är att forka 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 fork.  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 forkade 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.

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 forkat 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 forkade 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.

Lärare Per Austrin skapade sidan 24 augusti 2016

Lärare Per Austrin ändrade rättigheterna 25 augusti 2016

Kan därmed läsas av studerande och lärare och ändras av lärare.

Lärare Per Austrin ändrade rättigheterna 25 augusti 2016

Kan därmed läsas av alla inloggade användare och ändras av lärare.

Lärare Per Austrin ändrade rättigheterna 29 augusti 2016

Kan därmed läsas av alla och ändras av lärare.
kommenterade 3 september 2016

Hej, vid inlämning får jag felmeddelandet "Filen 'F1.hs' är inte samma i hämtbegäran som i Kattis-inskickningen" fast den är identisk, vad ska man göra åt det?

Lärare kommenterade 3 september 2016

Hej Jacob! Samtliga fall av detta som jag stött på hittills har varit pga det som beskrivs på den här sidan, kolla om det hjälper dig: https://www.kth.se/social/course/DD1361/subgroup/ht-2016-progp16/page/git-vanliga-fragor/

kommenterade 3 september 2016

Ingen av alternativen fungerade för mig, men eftersom problemet låg i git-windows bytte jag till unix och då funkade det, tack för hjälpen.

En användare har tagit bort sin kommentar
Feedback Nyheter