Every git release branch (1.8 - latest) built from source, for COPY --from
10K+
epicmorg/gitEvery git release branch from 1.8 to the latest, each at its newest patch release, built from the
kernel.org source tarballs (sha256-checked) on Debian 13 trixie. The point of the image is to be a
source for COPY --from: an application image picks exactly the git it needs instead of whatever
the distro or a PPA ships today. The newest branch is also tagged latest, and that is the git of the
Debian base images (epicmorg/debian:trixie and children).
git in /usr/local/share/epicmorg/git/<major.minor> (bin/, libexec/git-core/, share/), on PATH;share/man) and /emg-export - git + its libraries as a self-contained tree for COPY --from;git-lfs = the base image's (epicmorg/git-lfs:latest), not part of /emg-export;/usr/local/share/epicmorg/: curl 8.21 + OpenSSL 3.5 (LTS),
zlib, zstd, pcre2 - linked with a real RPATH, nothing in ld.so.conf;libexpat1 (http push), perl (send-email, svn, ... scripts).Built with the system compiler (gcc 14) from epicmorg/gcc:14. Fatal build-time checks: exact
git --version, no unresolved libraries in any git binary, no RUNPATH, one libssl/libcurl/libz across
all binaries, git-remote-https on the baked curl and OpenSSL, and an init + commit smoke test.
Environment: EMG_GIT_VERSION (branch), EMG_GIT_FULL_VERSION, EMG_GIT_DIR. System config is /etc/gitconfig
(built with sysconfdir=/etc, like Debian's git).
They are deliberately not named GIT_* - git itself reads GIT_DIR, GIT_PREFIX, ... from the environment.
| Tags | Dockerfile |
|---|---|
1.8 | 1.8 |
1.9 | 1.9 |
2.0 | 2.0 |
2.1 | 2.1 |
2.2 | 2.2 |
2.3 | 2.3 |
2.4 | 2.4 |
2.5 | 2.5 |
2.6 | 2.6 |
2.7 | 2.7 |
2.8 | 2.8 |
2.9 | 2.9 |
2.10 | 2.10 |
2.11 | 2.11 |
2.12 | 2.12 |
2.13 | 2.13 |
2.14 | 2.14 |
2.15 | 2.15 |
2.16 | 2.16 |
2.17 | 2.17 |
2.18 | 2.18 |
2.19 | 2.19 |
2.20 | 2.20 |
2.21 | 2.21 |
2.22 | 2.22 |
2.23 | 2.23 |
2.24 | 2.24 |
2.25 | 2.25 |
2.26 | 2.26 |
2.27 | 2.27 |
2.28 | 2.28 |
2.29 | 2.29 |
2.30 | 2.30 |
2.31 | 2.31 |
2.32 | 2.32 |
2.33 | 2.33 |
2.34 | 2.34 |
2.35 | 2.35 |
2.36 | 2.36 |
2.37 | 2.37 |
2.38 | 2.38 |
2.39 | 2.39 |
2.40 | 2.40 |
2.41 | 2.41 |
2.42 | 2.42 |
2.43 | 2.43 |
2.44 | 2.44 |
2.45 | 2.45 |
2.46 | 2.46 |
2.47 | 2.47 |
2.48 | 2.48 |
2.49 | 2.49 |
2.50 | 2.50 |
2.51 | 2.51 |
2.52 | 2.52 |
2.53 | 2.53 |
2.54 | 2.54 |
2.55 | 2.55 |
2.56, latest | 2.56 |
Every tag is pushed to docker.io, quay.io and ghcr.io (epicmorg/git:<tag> on each) - same digest everywhere.
Copy one git into your image (/emg-export = git + exactly the libraries it links; libexpat1 and perl
are already in the epicmorg Debian bases):
FROM ghcr.io/epicmorg/debian:trixie
COPY --from=ghcr.io/epicmorg/git:2.47 /emg-export/ /
ENV PATH="/usr/local/share/epicmorg/git/2.47/bin:${PATH}"
RUN git --version
Or just run it:
docker run --rm -v "$PWD:/work" -w /work docker.io/epicmorg/git:2.56 git log --oneline -5
2.34 a broken
curl "compat" define in http.h is disabled (modern curl has CURLOPT_USE_SSL as an enum), and the
oldest trees (HMAC_CTX on the stack in imap-send) are built NO_OPENSSL - only git imap-send loses
its own TLS; https still goes through the baked curl + OpenSSL 3.5.bin/python/git-versions-sync.py (reads kernel.org sha256sums.asc).Content type
Image
Digest
sha256:9408d74dd…
Size
739.9 MB
Last updated
about 12 hours ago
docker pull epicmorg/git:2.17