git-merge: the github conference

This is the list and summary of talks of the conference day, what last on me.

The future of free software.

In this talk Deb Nicholson talk about free software and the future.
First of all she describe future, first by its view as a young girl, then using words from William Gibson: “The future is now, it is just not evenly distributed”.
So the future should be better distribuited, and free software should play this role, to distribuite the power to users.

Tales in scalability … google …

In this talk Ivan Frade and Minh Thai explain the challenge to manage huge git repositories: Android and Chromium.
Ivan Frade explained the use of a bitmap for tree and references, such that every commit relation to others is coded into a map of bit: 1 means that it is related, 0 that is not.

The What, how and why of scaling repositories

In this talk Johan Abildskov expose some use case and how companies suppose to scale repository. There are 2 main strategies: a mono repository, and a many repositories policy.
He advocates “Accelerate, the Science of DevOps”, a book that analyses which are the reasons to choose one or the other option, in this and all that cases where DevOps choices are under consideration.

Transition Git to SHA256

Brian Carlson explain the phases setted to switch existing repositories from SHA1 to SHA2. Due to its distribuited nature, every git repository manage its state in all the place where a developer maintain its cloned repository, so everything is inside its .git folder, and arranged there.
The git CLI manage every commit by signing (by hash function) the current state and the dependency to its parent. The strategy to switch from SHA1 hash function to SHA256 is diveded into phases, starting from the first where only SHA1 is supported, then the middles ones where SHA1 and SHA256 are both supported, the ending with the very last where only SHA256 is supported, so all commits are identified by a 64 characters hashcode, and the 40-char length of SHA1 is no more understood

Git Protocols ….

Brandon Williams describe which are the new future that are introduced with git v2 protocol. Git natively support https, ssh and git protocols. For the first 2 protocols solving the versioning problem (to support both version) are solved by http-headers and by environment variable, respectively in https and ssh. But for git protocol, that is a native, binary protocol, the most optimized and quickier one, identifing old server from theirs reply was a challenging job. Brandon explained how all that was faced.

Git support for large object

Terry Parker expose the use of lfs, and cdn related problems, and partial clone option of git

Git for games: …

here John Austin dives into game development environment and how to manage repo in git, where there are large files that are not very well managed by a git due to distribuited nature and the needs for every developer to fetch all the repo.

He made a project, gitglobalgraph, that show something related to dependencies of tree in the git repos

The art of pacience

Belen Barros Pena is an interaction designer, and she does not know nothing about git.
She explain how she learnt to use git by example, by just using the command line.
What she underscores is that there is no simple way to explain git, because version control, distribuited, is a complex thing, so the only way to explain it is to work with the designer, and not for the designer, explains every time there is a problem how to use git command line to solve that problem.

Version control for law.

Ari Hershowitz compares congress and local parlaments lawyer work, with git diff, and try to make a translation between line changes (diff) and law-language, for mapping things into a repository, and back for the laweyer.

Git, the annotated notepad

Very accessible, but focused, talk that explain what is an atomic change and why it is important to commit every single logical change.
Aniket Subhash Kadam, independent developer

Version control for visual learner

Veronica Hanus explain his problem when she need associates a commit with a change visually, that is, changing a stylesheet is not visually evident from the commit message. She investigate on the use of puppeters/selenium driver and such, to automate such a task.

Panel conversation

—- not really a talk

Gitbase a sql interface to git

it could be interesting

Microsoft windows into git

there are at least some option to optimize the use of git, and those was presented by the microsoft worker (at Azure), John Briggs

Git based education ….

This talk explain how git promote the use of a … TDD development.

The workshop

For some reason I decided to book the workshop too, because I have to admit that I really have problem with git, I like it but sometime I fight with it.


The more interesting tool presented during the workshop day was the visualizing tool

In the visualizing tool there is a command ‘undo’, that has no counterpart in git, but that make the tool more usable and the learning more confortable.

The most important command I learned, and of which I was not aware, is

git reflog

That is very usefull to show the log of reference changes.

Also the presentation of 10 git problems and their solution, really focus on problem that I have all the day and I need to solve (but I am not good at it).

A full day of workshops focusing on git tool seems too much, but it is a tool that I use all the day for a long time now, but without really understand the concept behind it. As Belen Barros Peña said in her talk, the art of patience, the better way to explain git to a no developer is by example command, but that apply to developer too, because what I found when I tried to read the documentation was a pile of manpages that document every single command with all possible use and option, and some other document presenting the concept behind git. I am sure I had buyed a book too, talking about git. But at the end there was little relation between concept exposed and real git command.

What I learned is that ‘git reflog’ is really valuable, but also that the only way to understand how to solve a problem is to face that problem, as said by Briana Swift, more and more, in order to interiorize the problem and the relative solution.


Other theme is about the patterns that could be implemented on using git. That means the policy to be followed, the opportunity to protect a branch, the definition of (how many) branches.

Also there exist different option for the repository: many repo, one repo. Me and the company I am working for, are using the many repo arrangement, and the idea to have a single repo is not really appealing to me, but I discovered it exists git submodule, I do not know if it is related.

Another interesting tool I discovered is Gerrit

a collaboration tool that I probably want to introduce in the company

Also, during the conference there was a presentation of Jenkins X, but it was during lunch break. For what I could understand it is a command line tool (CLI) that setup pipelines on a Continuous Integration tool, and it permit to control the setted pipelines by the CLI. We are currently using JenkinsCI and I am ok with the pipeline defined in a Jenkinsfile.

Other CI tool everybody is talking about is CircleCI, I do not know which advances it has over Jenkins, maybe a native/natural support for docker-compose?