Git Blame Scalability

Loading...
Thumbnail Image
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu | Master's thesis
Date
2018-05-14
Department
Major/Subject
Ohjelmistotekniikka
Mcode
SCI3042
Degree programme
Master’s Programme in Computer, Communication and Information Sciences
Language
en
Pages
9+42
Series
Abstract
Version control systems are a critical part of software projects today. Version control systems keep track of changes as well as allow simultaneous developing and browsing the history. Blame is a view in Git, which is the most used version control system, allowing the user to see who has changed which line and when. Blame is also used in literature to learn more from open-source repositories. The problem in Git Blame is that it is very slow with large files that have undergone many changes. The Blame for 80000 line file with 8000 commits takes over one minute to generate. Git blame is used quite often, so the slow speed makes it unusable. The main goal of this thesis was to develop a program that reduces blame generation time by using previous blames to generate the requested blame quickly. Particularly, this thesis sought answers for the following research questions: Is it possible to generate blames properly from the intermediate result? How does the amount of caching speed up the process? How much data needs be stored and how long it takes? Which caching level is best for production? The developed program functioned well. It was found that the blame generation time can be dropped to one-tenth by the caching doubling the used disc-space from the plain Git repository. The disc space usage can be tuned in favor of the Blame speed. With maximum caching, the blame speed with large files was below one percent of the standard Git Blame. The disc space usage and initialization time are not too high and the maximum level of the caching is the best for the production. The limitations of the developed program are needed initialization time and used disk space. Further studies could aim to make incremental blame generation even faster.

Versionhallintajärjestelmät ovat kriittinen osa nykypäivän ohjelmistoprojekteja. Versionhallintajärjestelmät pivävät kirjaa muutoksista ja mahdollistavat yhtäaikaisen kehityksen ja historian tutkimisen. Blame joka on näkymä Gitissä, maailman käytetyimmässä versionhallintajärjestelmässä, näyttää tiedot tuoreimmasta muutoksesta jokaiselta riviltä. Blamea käytetään myös kirjallisuudessa tutkittaessa avoimen koodin ohjelmistojen muodostumista. Git Blamen ongelma on sen hitaus suurilla ja paljon muokatuilla tiedostoilla. Blamen generointi tiedostosta jossa on 80000 riviä ja 8000 muutosta kestää yli minuutin. Git Blamea käytetään usein, joten hitaus aiheuttaa oikeita ongelmia. Tämän diplomityön tavoitteena oli kehittää ohjelma joka lyhentää Blamen generoimiseen tarvittavaa aikaa käyttämällä aiemmin tallennettuja Blameja generoidakseen tarvittavan Blamen nopeasti. Tarkemmat tutkimuskysymykset ovat: Onko tämä generointi aiemmin tallennetuista Blameista toimiva tapa? Kuinka paljon välimuistitus nopeuttaa prosessia? Kuinka paljon dataa pitää tallentaa ja paljonko se vie aikaa? Mikä on sopiva välimuistitustaso tuotantokäytössä? Tällä tavalla voidaan Blamen generointiin tarvittava aika pudottaa kymmenesosaan tuplaamalla levytilan käyttö. Levytilan käyttöä voidaan säätää nopeuden kustannuksella. Täydellä välimuistituksella Blamen käyttämä aika isoilla tiedostoilla putoaa alle sadasosaan verrattuna standardi Git Blameen. Levytilan käyttö ja valmisteluaika eivät olleet liian isoja, joten korkein välimuistitustaso on paras tuotannossa. Heikkoudet kehitetyssä ohjelmassa ovat tarvittava levytila ja valmisteluajan tarve.
Description
Supervisor
Hirvisalo, Vesa
Thesis advisor
Sandberg, Magnus
Keywords
git, blame, annotate, versionhallinta, suorituskyky, välimuistitus
Other note
Citation