Bilden är copyright-skyddad och tagen från http://flossmole.org/content/revision-control-matrix-june-2011

Problemlösning

Problemställning och lösning

Större mjukvaruprojekt där man jobbar i team kan rendera ett flertal utmaningar då kodningen av mjukvaran ska koordineras, när flera personer är involverade i att arbeta med samma kod parallellt. Nedan följer exempel som man behöver kunna ha lösningar redo för:


  • Central lagring och backup-hantering
  • Central synkronisering av senaste uppdateringar
  • Skydd mot oavsiktlig överskrivning av filer och dylikt
  • Skydd mot ändringar i kod som man i efterhand vill ångra
  • Skydd mot oönskad åtkomst av känsliga projektfiler
  • Möjlighet till parallella utvecklingsgrenar på samma källkod
  • Möjlighet för flera att jobba med samma källkod samtidigt utan att påverka originalversionen

Versionshantering med t.ex. Subversion löser praktiskt taget allt detta.

På en subversionserver lagras projektfilerna i ett repository som servern håller reda på, ändringar i filer och strukturer kan spåras på en tidslinje och förtydligas med hjälp av loggfiler. Systemet kan även hålla reda på vem som har gjort vad (revisioner), och vem som har åtkomst till vad. Ur felsökningssyfte är det optimalt att kunna felsöka flera versioner av koden för att se var någonstans felet ursprungligen uppstod.

Klient/server-relationen sparar arbete för programmerarna då de slipper hålla reda på denna typ information själva, och den mänskliga faktorn kan ofta leda till svårsökta felsituationer. Administrationen sköts istället till stor del automatiserat och centralt, medan ändringar görs lokalt innan de sparas med hjälp av s.k. commits, såvida inte servern upptäcker krockar. Uppdateringar kan utvecklaren få lokal åtkomst med en check out. En klient/server-relation är dock starkt beroende av att servern inte har någon nertid. Man bör se till att föra backup.

Versionshantering är också tidseffektivt eftersom flera utvecklare kan jobba på samma källkod simultant utan att påverka originalversionen. Skulle misstag begås kan äldre versioner återställas (revert). Nackdelen i sammanhanget är att det med central administration blir striktare och svårare att manipulera filstrukturer och data men det kan samtidigt ses som en fördel ? ett extra skydd .

Vill man förgrena projektet med olika utvecklingslinjer finns det stöd för även detta, tack vare s.k. branches och tags. Huvudprojektet ligger då i en trunk, opåverkat, men kan sammanfogas med merge-funktionen.