Central Vs Decentral
Total Page:16
File Type:pdf, Size:1020Kb
Navn: E-NN Fødselsdato: xx-xx-98 Skole: EUC Nordvestsjælland Fag: Stud.pro, Større skr. opg (4937--) Dato for prøveaflæggelse: 21-12-2016 Titelblad til SRP opgaveformulering Elev: E-NN Klasse: 3.? Vejleder Studieretningsfag Teknologi A Georg Strøm på A-niveau: Andet fag og ITK B Erik Lund niveau: Opgaveformulering Titel: Open Source softwareudvikling - central og decentral versionskontrol Der ønskes en undersøgelse af fordele og ulemper, når udviklingen af software går fra centraliseret til decentraliseret versionsstyring. Når softwareudvikling går ”Open Source” skaber det nogle udfordringer med hensyn til at styre udviklingsprocessen og især styringen af, hvilke versioner der er aktuelle, hvilke der ikke er og hvilke, der afhænger af ændringer andre steder i softwaren. Disse problemer er ikke de samme, når udviklingen foregår inden for en traditionel, hierarkisk organiseret virksomhed, hvor styringen kan være mere centraliseret. Der skal laves en IT baseret teknisk gennemgang af de principper for source management, der anvendes i de analyserede systemer til versionskontrol, herunder en analyse af de fejl der kan opstå i forbindelse med revisionskontrol, risikoen for dem og håndteringen af dem ved central og decentral versionskontrol i de analyserede systemer. Der skal laves en teknologianalyse, som sammenligner mindst et system til central versionskontrol med mindst et system til decentral versionskontrol. Analysen skal omfatte en beskrivelse af ligheder og forskelle i produktet eller resultatet af de to typer af revisionskontrol. Til slut skal det diskuteres og konkluderes, på hvilke måder overgangen fra centraliseret til decentraliseret revisionskontrol kan øge eller mindske hastigheden og antallet af fejl ved udvikling af software, og hvilken perspektiver det kan have for Open Source softwareudvikling. Det centrale system til versionskontrol Apache Subversion og det decentrale system Git Hub kan bruges som case eller eksempler til belysning af problemformuleringen. Forventet omfang Omfang svarende til 10-16 A4 sider (2.400 anslag pr. side) ekskl. forside, indholdsfortegnelse, fodnoter, litteraturfortegnelse og bilag samt eventuelle tabeller eller illustrationer, uanset om disse er placeret i selve teksten. Evt. fordybelsesfag Evt. note til bedømmere Opgavebesvarelsen afleveres senest d. 21. december kl. 10.00 i "Netprøver.dk". Opgaveformuleringen (hele denne side) indsættes forrest i besvarelsen. Elias Z. Jørgensen 3z SRP – Teknologi A og ITK B 21/12 - 2016 Open Source Softwareudvikling Slotshaven Gymnasium Teknologi A: Georg Strøm Central og Decentral Versionskontrol ITK B: Erik Lund Anslag: 31201 E-NN 21/12 – 2016 kl. 10:00 SRP – Teknologi A og ITK2/14 B Kommentarer til opgavebeskrivelsen I opgaveformuleringen står der at “… det decentrale system Git Hub kan bruges…”, hvilket er ukorrekt. ”Git Hub”, eller ”GitHub” som det staves korrekt, er en platform til at opbevare, dele og administrere kildekoden til software projekter. ”Git” derimod, er det decentrale versionskontrolsystem, som er hvad min vejleder må have ment. Abstract This report examines the use of centralised and decentralised version control models used in the software industry and Open Source software development. It will explain why version control is being used, how it works, and how the two models differentiate, using the popular Subversion and Git version control systems as an example. This will be followed by an explanation and analysis of common Source Management principles used in software development, and how they solve common problems. Thereafter it showcases a comparative technology analysis of the two version control models, again using Subversion and Git as examples, which will determine the strengths and weaknesses of each model. Lastly it will discuss and conclude, how the transition from a central to a decentral version control model can impact the speed and amount of errors in software development, along with a view of the two models seen from the Open Source perspective, using Linux as an example. Indholdsfortegnelse 1. Afgrænsning .............................................................................................................................................. 1 2. Indledning ................................................................................................................................................. 1 3. Redegørelse af versionskontrolsystemer ................................................................................................ 1 3.1 Centraliseret versionskontrol - Apache Subversion ......................................................................... 3 3.2 Decentraliseret versionskontrol - Git ................................................................................................. 4 4. Source Management ................................................................................................................................ 5 4.1 Atomiske Operationer ........................................................................................................................ 5 4.2 Fil låsning ............................................................................................................................................ 5 4.3 Version Merging .................................................................................................................................. 5 4.4 Tags ..................................................................................................................................................... 6 4.5 Mulige fejl og håndtering deraf .......................................................................................................... 6 5. Teknologianalyse af versionskontrolsystemer ....................................................................................... 7 5.1 Apache Subversion ............................................................................................................................. 7 5.1.1 Viden ............................................................................................................................................ 7 5.1.2 Organisation ................................................................................................................................ 7 5.1.3 Teknik........................................................................................................................................... 8 5.1.4 Produkt ........................................................................................................................................ 8 5.2 Git ........................................................................................................................................................ 9 5.2.1 Viden ............................................................................................................................................ 9 5.2.2 Organisation ................................................................................................................................ 9 5.2.3 Teknik........................................................................................................................................... 9 5.2.4 Produkt ...................................................................................................................................... 10 5.3 Centraliseret kontra Decentraliseret versionskontrol .................................................................... 10 6. Overgangen fra Centraliseret til Decentraliseret .................................................................................. 11 7. Konklusion .............................................................................................................................................. 12 8. Litteraturliste .......................................................................................................................................... 13 E-NN SRP – Teknologi A og ITK B 21/12 - 2016 1. Afgrænsning Jeg vil i denne rapport fokusere på versionskontrolsystemer der bruges til at administrere softwareprojekter, og ikke andre typer af versionskontrol der f.eks. bruges til at holde styr på forskellige versioner af dokumenter, rapporter, billeder, osv. Jeg vil fokusere på de to mest brugte versionskontrolsystemer Subversion (Apache, 2016) og Git (Git, 2016), i min redegørelse og analyse. Dette har jeg valgt eftersom at det er dem der bedst afspejler brugen af versionskontrol i softwareindustrien, og samtidig repræsenterer både de centrale og de decentrale versionskontrolsystemer. Da målet med denne rapport er, at være forståelig for både tekniske og mindre tekniske personer, vil jeg ikke gå i dybden med de mere avancerede dele af versionskontrolsystemer, såsom ’rebasing’, da det ville gøre mere skade end gavn, og samtidig ikke er behøvet viden, for at kunne sammenligne de to forskellige typer af arkitekture. 2. Indledning Når en gruppe af mennesker har brug for at udvikle på samme softwareprojekt, så er der nogle forskellige måder at gøre det på. Én måde man kunne gøre det på ville være, at alle udviklere skiftedes til at redigere i projektet. Det fører dog til, at alle skal vente til at det bliver deres tur, hvilket spilder en masse dyr udvikler tid. En anden måde at gøre det på er, at alle har en kopi af projektet, og indbyrdes blev enige om hvilke filer, man hver især måtte redigere i. Det skaber dog problemer, når de skal til manuelt at stykke al koden sammen igen, og senere når de begynder at have forskellige versioner af