make connections share ideas be inspired Introduktion til versionsstyring Thomas Damgaard Technical Architect, SAS Institute
Agenda Hvad er versionsstyring? Hvorfor benytte versionsstyring? Historisk gennemgang Hvordan virker det? Versionsstyring med SAS Produkter på markedet
Hvad er versionsstyring?
Hvad er versionsstyring? Definitioner Versionsstyringssystem Engelsk: Version Control System A.k.a.: Revision Control, Source Control Management m.m. Produkter som Subversion, CVS, Git, VSS osv. Designkrav: 1. Muliggør, at folk arbejder samtidigt (parallelt) i stedet for serielt. 2. Når folk arbejder samtidigt, må deres ændringer ikke komme i konflikt med hinanden. 3. Arkiverer alle versioner af alt, der nogensinde har eksisteret. 4. Registrerer, hvem der gjorde hvad, hvornår, og evt. hvorfor.
Hvorfor bruge versionsstyring? Hvorfor ikke bare et fælles netværksdrev? Overholder ikke designkrav 1 og 2 Dvs. at man ikke kan arbejde flere samtidigt Risikerer at overskrive data (hvem gemmer sidst?)
Hvorfor bruge versionsstyring (fortsat)) Hvorfor ikke bare et fælles netværksdrev? Overholder ikke designkrav 3 Man oplever filnavne som:» Monthlyreport.sas» Monthlyreport.old» Copy of Monthlyreport.sas» _OLD_Monthlyreport.sas» 20090804_Monthlyreport.sas» Osv.
Hvorfor bruge versionsstyring (fortsat)? Hvorfor ikke bare et fælles netværksdrev? Overholder ikke designkrav 4 Gemmer ikke metadata:» Hvem ændrede filen?» Hvornår blev filen ændret?» Evt. hvorfor?
Fordele ved versionsstyring Registrering fortæller, hvem der har ændret hvad og hvornår Man undgår konflikter Det er muligt at fortryde ændringer Branches: dev, test, prod osv. Dataintegritet (atomic commits)
Historisk gennemgang Tre generationer Generation Arkitektur Operationer Produkteksempler 1. Gen Lokal En fil ad gangen SCCS, RCS 2. Gen Centraliseret Flere filer Subversion, CVS, TFS 3. Gen Distribueret (p2p) Changesets (patches) Git, Mercurial
Hvordan virker det?
Koncepter Repository Repository Centralt opbevaringssted for versionerede filer Opbevares på serveren Ændres vha. commitoperationer Tre dimensioner: filer, mapper, tid Metadata: Changelog, ACL
Koncepter Working Copy Working Copy Snapshot af repository Ligger på klienterne Oprettes vha. checkoutkommando Opdateres vha. updatekommando To dimensioner: filer, mapper
Operationer Grundlæggende operationer Commit Gem ændringer i repository Repository registrerer: hvem, hvad, hvornår, hvorfor Update Opdater Working Copy med ændringer fra repository
Arbejdscyklus Grundlæggende workflow Init: Lav working copy med indhold fra repository 1. Updater working copy med ændringer fra repository 2. Ændr working copy 3. Ændr repository 4. Goto 1
Versionsstyring med SAS
Use case 1 Eksempel på brug af versionsstyring til SAS -udvikling 3 udviklere arbejder på DEV Når programmer er testet, lukkes PROD -version WC på PROD-server opdateres til PROD-version
Use case 2 Eksempel på brug af versionsstyring med SAS Data Integration Studio Arkivering af metadata med SAS DI Studio og Subversion
New: Versioning and archiving
Versionering med DI Studio
Produkter Sammenligning af populære produkter Produkt Producent SAS -integration Platforme Licens Subversion Apache DI Studio Windows, Mac, APL Unix, Linux Team Foundation Server Microsoft Code: Manual Windows Proprietær CVS CVS DI Studio Windows, Mac, GPL Unix, Linux Bazaar* Canonical Code: Manual Windows, Mac, GPL Unix, Linux Git* J. Hamano Code: Manual Windows, Mac, Unix, Linux GPL *) Bazaar og Git er distribuerede
Opsummering Versionsstyring Gør det muligt at arbejde flere samtidigt Gør det muligt at fortryde ændringer Man kan registrere, hvem der har ændret hvad og hvornår Kan med fordel anvendes af SAS-udviklere Understøttes af SAS Data Integration Studio (Subversion, CVS) Det er let at komme i gang (behøver ikke at koste noget)
Ressourcer Links: Subversion: http://subversion.apache.org/ TortoiseSVN: http://tortoisesvn.tigris.org/ Git: http://git-scm.com/ Mercurial: http://mercurial.selenic.com/ CVS: http://savannah.nongnu.org/projects/cvs TFS: http://msdn.microsoft.com/en-us/vstudio/ff637362 Litteratur: Version Control with Subversion af B. Collins-Sussman, B.W. Fitzpatrick & C. M. Pilato: http://svnbook.red-bean.com/ Version Control by Example af Eric Sink: http://www.ericsink.com/vcbe/
Spørgsmål?
make connections share ideas be inspired Tak Vi ses næste år!