Konfigurations & Versionshantering samt Subversion Henrik Bergström henrikbe@dsv.su.se Release Exekverbar kod Installationsfiler Datafiler Setup-program Elektronisk och pappersdokumentation Info om målmiljö (OS, versioner av komponenter, andra parametrar som komp och länkningsval) CI -definition Konfigurations vs Versionshantering A configuration item (CI) is any part of the development and/or deliverable system (whether software, hardware, firmware, drawings, inventories and/or documentation) which needs to be independently identified, stored, tested, reviewed, used, changed, delivered and/or maintained. CIs differ widely in complexity and may contain other CIs in a hierarchy. M. Kelly, Configuration Management, The Changing Image: McGraw-Hill, 1996. Configuration Management (CM) Version/revision-hantering CM är ett vidare begrepp än version/revisionhantering Version/revision-hantering ingår i CM Ändringshantering (Change control/management) Systemgenerering (build management) etc
CM - Översikt CM - Roller CM Configuration Manager Configuration identification Configuration control Status accounting Configuration auditing M. Kelly, Configuration Management, The Changing Image: McGraw-Hill, 1996. Document configuration controller Software configuration controller Hardware configuration controller Configuration control clerk M. Kelly, Configuration Management, The Changing Image: McGraw-Hill, 1996. CM standarder CM-plan CM bör baseras på standarder som används i organisationen Standarderna bör definiera hur produkterna identifieras, hur ändringar kontrolleras och hur nya versioner hanteras Standarder kan baseras på externa CM standarder (t ex IEEE:s standard för CM) eller interna Definierar typer av dokument för CM och namngivningskonventioner för dokument Definierar ansvar för CM-procedurer och skapande av baselines Definierar regler för ändringskontroll och versionshantering Definierar CI:s och databas som måste underhållas Beskriver verktyg som ska användas för CM-processen och verktygets begränsningar
CM-plan från ISO 10007 CM-databas Introduction Description of the system or CIs to which the plan applies, a schedure of the CM activities, the purpose and scope of the plan, list of related documents etc Policies and procedures CM policies, CM organisation and structure of the CCB and the other committees, selection criteria for the CIs, frequency, distribution and control of reports and agreed terminology. Configuration identification Family tree of the CIs, numbering conventions, baselines to be established etc. Configuration control Organisation and composition of the CCB, change mangement procedures and so on. Configuration status accounting Procedures for collecting, recording, processing, and maintaining the data for status accounting reports, definition of all CM reports etc. Configuration audit List of audits to be conducted, the audit procedures, the authorities and disciplines involved, format of the audit reports, etc. All CM-information bör finnas i en databas Exempelfrågor om konfigurationer att besvaras Vilken kund har en viss systemversion? Vilken plattform krävs för en viss version? Vilka versioner påverkas av en ändring i komponent X? Hur många rapporterade fel finns i version T? Vilken version av vilken kompilator användes för att kompilera komponenten X i produkten Y version Z som kunden W har? Varför? Vad är versionshantering? Versionshantering låter dig arbeta med olika versioner av systemet Versionshantering är en säkerhetsmekanism som tillåter en att gå tillbaka och få fram tidigare versioner av ett system Versionshantering hjälper till att koordinera arbetet när man är flera personer i ett projekt
Bara en liten ändring till Varför ska man använda sig av versionskontroll? Varför inte? CM i praktiken: introduktion Versionshantering - Historia Har funnits nästan lika länge som datorerna Rätt lätt med hålkort Manuell process, svarta tavlan Verktygsstöd kom rätt tidigt, redan i början på 60-talet
Vad bör versionshanteras? Versionsnumrering - linjär Programkod Dokumentation Krav Buggrapporter 1.0 1.1 1.2 1.3 Versioner av programvara Versionsnumrering - flera parallella grenar 1.3.1.0 1.3.1.1 1.3.1.2 1.3.1.3 första grenen 1.3 1.4 1.5 1.6 1.3.2.0 1.3.2.1 andra grenen
Versionshanteringssystem Versionshanteringssystem Vanligen en databas för källkodsfiler Ändringslogg Möjlighet att återskapa tidigare versioner Stöd för koordination av utvecklare Check-in/Check-out Fillåsning Kodjämförelse Eventuellt stöd för parallell utveckling Eventuellt integrerad med krav/fel-hantering Checkin och checkout Deltas All kod samlas i en central databas För att editera/testa/etc en fil checkar varje utvecklare ut en privat kopia av filen När editeringen är klar checkas filen in i databasen igen I stället för att spara varje version som en separat fil kan man nöja sig med att spara en version och information om vad som krävs för att skapa övriga versioner Fördel: tar mindre plats man kan se vad som ändrats Nackdel: det kan ta tid att återskapa en tidigare version
diff Ex diff Jämför textfiler på radnivå Används av Subversion när två personer har editerat samma fil >diff Prog1.java Prog2.java 2,3c2,3 < public static void main(string[] argumentvektor){ < System.out.println("Detta är en text"); --- > public static void main(string[] args){ > System.out.println( Detta är en annan text!"); Fillåsning Utan fillåsning Innan en fil kan editeras måste den checkas ut med låsning De som bara vill använda filen kan checka ut den utan låsning När en fil är låst kan ingen annan editera den Vad händer om man går hem på kvällen och glömmer att checka in filen igen? Flera personer kan editera samma fil samtidigt VHS:et måste kunna jämföra filer och slå ihop dem diff manuellt
Verktyg - historiska Verktyg - Freeware IEB_UPDATE IBM Update CDC ~1960 Change and Configuration Control (CCC) SoftTool 1975 Source Code Control System (SCCS) 1975 Source Code Control System (SCCS) Revision Control System (RCS) Concurrent Versions System (CVS) Subversion Se även comp.software.config-mgmt FAQ del 2: Configuration Management Tools Summary Verktyg - Kommersiella Läs mer Finns i princip hur många som helst Se även comp.software.config-mgmt FAQ del 2: Configuration Management Tools Summary W. A. Babich, Software Configuration Management: Addison-Wesley, 1986. H. R. Berlack, Software Configuration Management: Wiley, 1992. M. Kelly, Configuration Management, The Changing Image: McGraw- Hill, 1996. R. Conradi, Software Configuration Management, in Lecture Notes in Computer Science 1235: Springer Verlag, 1997. A. Leon, A guide to software configuration management: Artech House, Inc., 2000. D. Thomas & A. Hunt, Pragmatic Version Control Using CVS: The Pragmatic Programmers, 2003.
Subversion Utvecklat för att ersätta CVS Tämligen nytt Terminalbaserat GUI finns - stöds inte, använd dem om ni litar på er själva http://subversion.tigris.org/ Subversion - att ge kommandon svn kommando [ev flaggor, filer etc] svn commit svn commit Filnamn.java svn commit -m loggmeddelande svn help svn help kommando Subversion - kommandon Subversion - kommandon (forts) Engångs-kommandon import checkout Användningskommandon update commit add, delete, move, copy Statuskontrollkommandon status log diff blame Konflikthanteringskommandon resolved Hjälp finns svn help kommando
Subversion - Kom igång Subversion exempel på andra gränssnitt Skapa ett repository Sätt miljövariabeln SVN_EDITOR Skapa en arbetskatalog Lägg in en första version av projektet Använd