Git has come a long way in the 10 years since Linux creator Linus Torvalds released the first version of the now-popular distributed revision control system. For example, the addition of pull requests came three years after the original release, according to Atlassian. And over time it has added more collaboration tools, code review tools, integration to continuous integration systems, and more, recalls Qt Project core maintainer and software architect at Intel, Thiago Macieira.
“At the time we chose (Git), it was for raw performance and for the fact it was distributed,” Macieira said. “Since then, it has gained other benefits… And since it’s now so popular, it’s not a barrier of entry for new contributors.”
Here Macieira shares more about how and why the Qt Project – an open source application development framework – uses Git, its success stories using the tool, and his favorite tip for pro users.
Linux.com: Why does Qt use Git?
Thiago Macieira: Because Git is the best tool for the job. Qt had progressed through several different version control systems and by 2008 we had clearly come to the conclusion that we needed something distributed, to facilitate collaboration as the team grew. Several of our key contributors were already using git-p4 to keep local trees and share things. In addition, we also wanted to make our repository public but read-only, something we could never have done with our previous centralized system.
Before we settled on Git, we did compare it to other distributed version control systems at the time and found that Git had the best performance overall and best long-term chances of succeeding. We did identify some performance issues on non-Linux systems, but those were quickly fixed once identified.
What makes Git such a great tool?
At the time we chose it, it was for raw performance and for the fact it was distributed. Since then, it has gained other benefits, like collaboration tools, code review tools, integration to continuous integration systems, etc. And since it’s now so popular, it’s not a barrier of entry for new contributors.
How many developers do you have collaborating on git?
Between 80 to 100 different people, on a weekly basis [see http://www.macieira.org/~thiago/qt-stats/current/qt-all.author.unique.png]
Over the last year, a script of mine is showing 288 people.
How much do you personally use it?
All the time. I use it for every project I participate in, as well as for projects I don’t contribute to. I use it even for projects that don’t officially host on Git, like GCC, LLVM and Clang.
I also engage in some UGFWIINI (Use of Git For What It Is Not Intended) by using it to back up my home directory.
What’s Qt’s most active git repo right now and why?
It’s qtbase.git, followed by qt-creator.git. See these two graphs for the numbers:
http://www.macieira.org/~thiago/qt-stats/current/qtbase.author.absolute.png
http://www.macieira.org/~thiago/qt-stats/current/creator.author.absolute.png
They are our largest repositories with critical pieces of our infrastructure. qtbase.git contains the base Qt libraries, which are also the oldest, whereas qt-creator.git contains the IDE and it’s a large and complex application.
What is your favorite pro tip for using git?
The –patch options to git add, git checkout and git reset.
Any git success stories you can share?
I think the conversion from KDE’s Subversion server to Git. At the time I started on that project, the KDE Subversion server was already the largest in the world at 800k commits. By the time we began the conversion, it had 1.1 million commits and required the distributed effort of lots of people writing rules for importing branches and tags the proper way.
Read more:
Git Success Stories and Tips from Wine Maintainer Alexandre Julliard
Git Success Stories and Tips from Puppet Labs’ Michael Stahnke
Git Success Stories and Tips from Tor Chief Architect Nick Mathewson
Git Success Stories and Tips from Drupal Core Committer Angie Byron
Git Success Stories and Tips from KVM Maintainer Paolo Bonzini
10 Years of Git: An Interview with Git Creator Linus Torvalds