[Baypiggies] June Talk: Explore Git internals using Python | Let's write `git log` in Python

Glen Jarvis glen at glenjarvis.com
Wed Jun 1 10:46:42 EDT 2016

For our June talk, we are in collaboration with the Silicon Valley Python
MeetUp. It was a talk that I had already arranged with that group but, in
January, had asked if we could re-arrange it to accommodate BAyPIGgies need
for speakers.

Since we already had a lot of RSVPs on that list, please use this link to
RSVP instead (this month only):




Git is a powerful tool for source control. It's often misunderstood and
abused. Under the surface Git is an elegant and simple data structure. When
you don't understand that data structure, you don't really understand Git.
It is flexible enough to give you all the rope that you need to hang
yourself in Git hell. However, if you understand it, metaphorical Gordian
knots seem simple and Git hell doesn't exist

Python is an elegant programming language heavily influenced by ABC "a
teaching language, a replacement for BASIC...." [1] It's a perfect tool
that looks like pseudo-code but executes. However, even with its
simplicity, it is one of the most powerful programming languages that
exists. It is a perfect language to document and run the Git data structure
as we explore it.

In this talk, we start with a simple explanation of the Git data structure
on disk. We then begin live-coding to read those data structures and
reconstruct a `git log` command for any arbitrary git repository without
using the `git` command [2]. When finished, we should have our own working
command that does the same thing as `git log` for any arbitrary repository,
on any branch. We'll simply start at `HEAD` and work our way down the data

Although it is not *useful* to have a Python version of Git, it is *fun*.
Also, this exploration helps you understand the Git tool on a much deeper
level. When you can program something, you can understand it. And,
understanding Git helps you be a better developer and collaborator.

About the Speaker

Glen Jarvis has been programming Python for over 8 years and has been
programming in different languages for over twenty years. He has been certified
in Linux/Unix administration by UC-Berkeley. Before that, he gained the
highest certification available for Informix database administration and
supported administrators. He is also certified in MongoDB as developer and
administrator. He is currently working on his AWS certification.

He has worked for companies such as IBM, UC-Berkeley, Sprint and many
Silicon Valley Start-ups. He has worked in the fields of Databases, Data
Science, Bioinformatics and Web Technologies. He has been exclusively
working in DevOps the past year.

Glen has been working for almost three years at RepairPal, a successful
start-up that gives you free estimates for what your car repair *should*
cost [3]. He is currently putting the "Dev" in "DevOps" using Ansible (and
Ruby). He additionally owns a consulting and training company, Glen Jarvis,
LLC, that mentors budding programmers. Some of his training Videos include
How to create a free AWS instance, Ansible Hands-On Training, and An
introduction to Test Driven Development. He has also been an open source
contributor [4] and a member and co-organizer of the Bay Area Python
Interest Group (BayPIGgies) [5].


[2] With one small caveat. There is only one plumbing command used to read
a binary file `git cat-file`. The rest is ASCII text that we can

[3] http://repairpal.com/

[4] https://github.com/glenjarvis/

[5] http://baypiggies.net/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20160601/f055013d/attachment.html>

More information about the Baypiggies mailing list