Analyze and Visualize
Git Log
For Fun and Profit
Raimonds Simanovskis

@rsim
Ignite RailsConf 2012
Code Metrics...
Lines of
code
Cyclomatic
complexity
Test
coverage
Duplication
Git Commit Log
Mining Rails —
Learning from your
App’s Lifeline
Michael Feathers,
Corey Haines
RailsConf 2011
Multi-Dimensional
Analysis
TimeFiles
Authors
Measures
Commits
Additions
Deletions
Dimensions
File Extension
Commit
Time Zone
Hour
Week Day
Ruby on Rails Git Log
Changes in Ruby files
Birth of Rails
Great Rails 3
refactoring
RailsConf
is coming
DHH contribution
Rails is mine
Let others
contribute
too
Car racing
takes all
my time…
OMG! I should
give a technical
talk at RailsConf!
Don’t make this
mistake anymore
Top contributors in 2015
by number of commits
Top contributors in 2015
9-to-5 disciplined
developer
Hours of day
warms up with
small commits
eats lunch
at 12pm
finishes work
and socializes
Aaron Patterson
Don’t judge
someone by their
appearance
Hours of day
@tenderlove
Don’t burn
yourself!
Hours of day
José Valim
Why don’t you
sleep?
Ruby on Rails contribution in 2012
Working on
Elixir?
Get angry
and start
deleting
code?
Finding the best
working pattern
Hours of day
Elixir contribution in 2015
José Valim
Contributions by
time zone in 2015
US West
coast
Brasil
Europe
Japan
India
Changes per day of week
in 2015
Changes per hour
on Fridays, in 2015
Beer
time
BDD
Linux
> 0.5M commits
> 20M lines of code
> 70M lines of changes
> 14K contributors
Changes over time
Jan 1
1970
Apr 25
2037
Changes over time
Jan 1
1970
Apr 25
2037
Apr 16
2005
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Top changed files
What is this large

C++, C, Assembler
project?
Changes over time
Really?
> 4M LOC?
Changes over time
Really?
> 4M LOC?
#### Dependencies
Node.js has several bundled dependencies in the *deps/* and the *tools/*
directories that are not part of the project proper. Any changes to files
in those directories or its subdirectories should be sent to their respective
projects. Do not send your patch to us, we cannot accept it.
Without dependencies
Without dependencies
Top contributors
Ryan Dahl
Creator of Node.js
Isaac Schlueter
Top contributors
John Resig
Creator of jQuery
Top contributors
Alexei
Vladishev
Huge Toad
Bonus WTF
Why duplicates?
Oh, Unicode…
"Jau0304nis"
"Ju0101nis"
a + ̄
ā
"Jau0304nis"
"Ju0101nis"
.gitconfig
as UTF-8
WHY???
There are only
2 hard things in CS
Naming things
Cache invalidation
Off by one errors
Time zones
Unicode special characters
https://eazybi.com/help/git
@rsim

Analyze and Visualize Git Log for Fun and Profit - DevTernity 2015