Att arbeta med Git i Progp.
Motivation
All kod i näringslivet, alla viktiga open source-projekt och fler och fler hobbyprojekt använder Git för att hantera olika versioner av ett program. Även om de använder ett annat system för att kontrollera versioner så kommer ni lättare att kunna lära er det systemet om ni först kan Git. Git ser till att göra den senaste versionen av filen lätt att komma åt, samt att hålla koll på historiken på ett projekt. Git gör det också enkelt och smidigt att experimentera med ett projekt i olika riktningar (branches) utan att förstöra en grundversion som (nästan) fungerar.
Komma igång
För att komma igång med Git så behöver ni läsa en tutorial. Ni kan välja vilken ni vill, men den här är vettig Links to an external site..
Ni behöver inte kunna det utantill, men för att använda git via terminalen eller de flesta utvecklingsmiljöer så behöver ni generera ssh-nycklar och lägga till dem i ssh-agenten Links to an external site.. Om ni behöver hjälp med att komma igång med git så finns det hjälp att få på labbar eller allmänhandledningen. Observera att om ni både labbar på skolans datasystem och på din egen dator så behöver du generera ssh-nycklar en gång för skolans datasystem (dessa har gemensamma användare så du behöver inte göra det för olika labbdatorer) och en gång för var och en av era egna datorer som ni vill använda i kursen.
Att komma igång med en enskild labb
För varje labb i kursen kommer du att få ett repo under organisationen "progp22". Om ditt användarnamn t.ex. är "anna", kommer du för labb "F1" få ett repo "anna-F1" med sökväg https://gits-15.sys.kth.se/progp22/anna-F1. För att komma igång med denna gå in på din labbkatalog med sökvägen Documents/progp och när du är i rätt katalog skriva:
git clone [namnet på repot för kloning via ssh]
När ni har gjort en signifikant förändring i din laboration, exempelvis lagt till en funktion, tagit bort en funktion, fixat en bugg. Skriv följande i terminalen eller gör det via Github desktop/din utvecklingsmiljö.
1. git add [filen/filerna som ändrats]
2. git commit -m "[Sammanfatta kort vad ni gjorde som tillförde värde]"
3. git push
Push skickar alla ändringar till Kth:s Github. Ni behöver inte göra detta efter varje add och commit utan det räcker med att göra det en i slutet.
Om ni vill hämta hem de senaste ändringarna från Github och inte har lokala förändringar av samma repo så kan ni gå in i katalogen och skriva:
git pull.
Om det däremot finns förändringar lokalt och på Github så kommer det att bli en konflikt. Se nästa stycke.
Mergekonflikter
Om ni hamnar i en situation där ni försöker pusha ändringar till ett repo som har förändringar som ni inte har lokalt så kan det bli ett problem i form av en mergekonflikt. Dessa kan lösas på det enkla sättet eller det mer avancerade sättet.
Det enkla sättet är att klona ned hela repot i en annan katalog och lägga till samma ändringar som ni vill ha upp på detta nya repo, göra add, commit och push från det nya repot och sedan fortsätta arbeta från det nya repot.
Det mer avancerade sättet är att välja rätt verktyg för situationen av git branch eller git merge. Här är en guide
Links to an external site. för att komma igång.
Använd inte web upload
Använd inte web upload för kod. Det är ok att ladda upp en pdf med dokumentation via web upload men även där är det bra (men inte ett krav) att gå via terminalen, utvecklingsmiljön, ett plugin från editorn eller Github desktop. Om ni slarvar med detta på första labben så kommer rättande assistenterna att påpeka det, men från och med den andra labben ni gör så är detta krav.
Om du vill göra labbarna i kursen tillsammans med en kompis, gå till denna sida (om ditt användarnamn är anna) https://gits-15.sys.kth.se/orgs/progp22/teams/anna I vänstermarginalen kan du se ett '+'-tecken där du kan lägga till en labbkamrat i ditt team som då kommer att kunna arbeta med dina repon.
För att redovisa en enskild labb: Rutiner för Git, Kattis och Stay a While (queue)
1. Om ni inte redan har gjort det, registrera er på årets omgång av progp på Kattis. Gå in på kursomgångens sida för aktuellt år och klicka "Jag är student på kursen och vill registrera mig på Kattis." Detta gör att assistenterna kan se era inlämningar.
2. Skapa ett issue med rubriken "Redovisning". I texten ska det stå vilka som har samarbetat med labben (högst 2) och om det är en labb som testas på Kattis så ska det finnas en länk till ett avklarat Kattistest, alternativt ett kattis-ID på inskickningen. I den bästa av alla världar så kommer en assistent att kolla issuet och kontakta er via Git för att boka in en tid på nästa redovisningspass. Om detta inte händer så kan ni behöva dyka upp själva och redovisa på drop-in.
3. Ta med legitimation och var beredd på att visa upp det på redovisningspasset.
4. Kom på ett digitalt labbpass för att redovisa labbarna. Kolla i schemat när labbpassen är och köa här: https://queue.csc.kth.se/Queue/Progp
Det går bra att redovisa alla labbar i par, även betygshöjande.
5. När labben är färdigredovisad, stäng issuet. Det här är viktigt för att undvika dubbel- och trippelarbete för assistenterna.