Using Gource with GitHub commits
Quite some time ago, I had the brilliant idea to visualize the commits in the Phalcon repository.
Years ago, a colleague visualized the commits of the whole team for the project at the time and the result was really good. It was fascinating to see peoples names jump around here and there and making the whole code increase and progress.
The application to create a video of all (or some) of the commits in a repository is called Gource.
After quite a bit of experimentation, I managed to get the perfect combination of parameters to make the videos. You can watch any of these videos in Phalcon’s Visualizations playlist.
To create such a video you will need couple of applications. First and foremost, you need gource
as well as ffmpeg
to be installed on your machine. Then (and this is my preference) you will need an image file (appearing at the bottom corner of the video). I have used the logo–tablet from our assets repository.
The visualization is a two step process. First, I parse the repository and create a PPM file with all the data and then convert that to a MP4 file using ffmpeg
gource -1920x1080 \
--stop-at-end \
--multi-sampling \
--highlight-users \
--highlight-dirs \
--auto-skip-seconds 1 \
--file-filter \.png \
--dir-colour 8b91a2 \
--highlight-colour ffffff \
--key \
--bloom-multiplier 0.2 \
--bloom-intensity 0.5 \
--hide mouse,filenames \
--seconds-per-day .5 \
--dir-name-depth 1 \
-r 60 \
--logo ~/Downloads/logo--tablet.svg \
--title "Visualizing commits for Phalcon PHP in 2021" \
--start-date "2021-01-01 00:00:00" \
--stop-date "2021-12-30 23:59:59" \
-o ../2021.ppm
The resulting PPM file will be quite big so you will need to have enough space to cater for that.
To produce the MP4 file:
ffmpeg -y \
-r 60 \
-f image2pipe \
-vcodec ppm \
-i 2021.ppm \
-vcodec libx264 \
-preset medium \
-pix_fmt yuv420p \
-crf 1 \
-threads 0 \
-bf 0 \
2021.mp4
The audio used is from Patrick Patrikios and is called Forgiveness.
-
Nikolaos Dimopoulos
Boldly goes where no other coder has gone before.... and other ramblings
Recent Posts
-
Setting up Docker for Qubes OS
2024-10-05 -
PhpStorm cannot create scratch files
2023-12-07 -
PHP 8.2 Deprecation of Dynamic Properties
2023-07-18 -
New Look
2023-06-12 -
Linux Swap file in RAM
2023-04-17
Tag Cloud
-
amazon (3)
android (1)
angularjs (7)
apps (1)
aurora (1)
aws (1)
backup (2)
bash (1)
bitbucket (1)
blog (2)
books (1)
bootstrap (1)
buzz (1)
cPanel (1)
cache (1)
celebrations (4)
chromium (3)
chromium os (3)
cloud computing (3)
codacy (1)
codecov (1)
communications (1)
composer (1)
conversion (1)
copy (1)
degoogle (5)
design (1)
design patterns (3)
discord (1)
docker (1)
docs (3)
documentation (1)
ec2 (3)
emerge (1)
encoding (1)
factory (1)
froyo (1)
fujitsu (1)
gentoo (7)
git (3)
github (2)
gmail (3)
google (16)
google apps (4)
google maps (1)
gource (1)
ha (1)
hosting (2)
how to (36)
igbinary (1)
information (5)
input (1)
installation (6)
internet (1)
iphone (1)
json (2)
libreoffice (1)
linux (13)
localization (1)
lts (1)
mariadb (1)
memorial day (1)
metrics (1)
migration (1)
mod_rewrite (1)
mov (1)
mp4 (1)
mysql (6)
nas (1)
netlify (1)
new look (1)
nexus one (2)
nfs (1)
notebook (1)
online storage (1)
openoffice (1)
opinion (1)
oracle (1)
patterns (1)
payroll (1)
performance (3)
personal (9)
phalcon (12)
php (23)
php8 (2)
php82 (1)
phpstorm (1)
phpunit (2)
picasa (2)
portage (1)
privacy (1)
programming (9)
proxy (1)
qubes os (1)
rant (5)
rdbms (1)
rds (1)
relationships (1)
release (1)
remove (1)
replication (1)
review (9)
rsync (2)
s1300 (1)
scan (1)
scratch (1)
serialize (1)
series (9)
singleton (1)
sorting (1)
spaceship (1)
spam (1)
ssl (1)
static (1)
storage (6)
submodules (1)
subversion (2)
svn (1)
swap (1)
tdd (1)
technorati (1)
test driven development (1)
testability (1)
testing (2)
titles (1)
traits (1)
ua (1)
ubuntu (1)
update (6)
upgrade (1)
usa (2)
usort (1)
utf8 (1)
video (1)
visualization (1)
vps (1)
webm (1)
website (1)
wget (1)
zend framework (4)
zram (1)
zstd (1)