Building git 2.x from source on Debian

For most, the version of git available with your distribution is sufficient. I, however, like to make things interesting for myself. Accordingly, neither the git build available in wheezy main nor wheezy-backports meets my needs (Jessie also doesn’t provide the latest release). Provided are 1.7 and 1.9, respectively; I need at least 2.41.

Fortunately, building git from source isn’t particularly challenging.

Preparation

First, remove your distribution’s version of git:

apt-get remove git

Second, ensure that the necessary requirements are met before building git:

apt-get update
apt-get install libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential autoconf

In place of libz-dev, zlib1g-dev may be selected; this is nothing to worry about.

Downloading & Building

When I wrote this, 2.7.1 was the latest stable release. As that will inevitably change, finding the latest release is a matter of visiting https://github.com/git/git/releases; from the list, copy the link to the latest tar.gz release and substitute that below.

Using git-2.7.1.tar.gz as the latest version, building git is a matter of:

cd /tmp
curl -L --progress https://github.com/git/git/archive/v2.7.1.tar.gz | tar xz
cd git-2.7.1/
make configure
./configure
make prefix=/usr/local all

As long as the aforementioned prerequisites are met, this should succeed without incident.

Installing the latest git build

To install the newly-built git:

make prefix=/usr/local install

Next, confirm that the install succeeded and git is accessible:

$ which git
/usr/local/bin/git

Lastly, verify that the installed version matches what you built:

$ git --version
git version 2.7.1

If either the location or version don’t match, confirm that you removed all existing git builds as noted in the Preparation section.

Monitoring for new releases

Now that you’ve built git from source, apt-get update && apt-get upgrade won’t cover your git binary. Instead, you’ll repeat the above process, substituting the latest release for 2.7.1 in the preceding examples.

Since the Git project uses GitHub’s releases feature to tag updates, there’s an RSS (okay, Atom, but ¯\_(ツ)_/¯) feed to track changes: https://github.com/git/git/releases.atom. I’ve connected that to a Slack instance and used IFTTT to deliver notifications via email.

  1. Owing to GitLab, which deserves its own post.

One thought on “Building git 2.x from source on Debian”

Leave a Reply