Sign inSign up

bauk/git

By bauk

Updated over 2 years ago

These docker images provide a quick and easy way to use different git versions.

Image
0

50K+

bauk/git repository overview

bauk/dockerhub-git (bauk/git on Docker Hub)

Intro

This repo is used for automated builds of bauk/git on dockerhub.

It is meant to be an easy way to trial or test with different versions of git, without having to install them manually.

Quick Start
# To run the latest git version on your current directory:
docker run --rm -it --user $UID -v $PWD:/git bauk/git bash

Tags

The following tags are available. Currently the default OS is fedora but there are some older centos images too.

formatexamplenotes
{version}2.24.0The last CentOS build using that git version
{os}-{version}centos-2.24.0The last build of that OS and git version
{os}-{version}-{commit}centos-2.24.0-712c3feThe only tag that is sure to not get updated. The id of the master branch is used as a unique id
{os}centosThe last build of the highest version number for that OS
latestlatestThe latest centos build of the highest version number
{type}fullThe latest build of that type. Default OS is assumed.
{type}-{version}full-2.24.0The build of that type with the specified git version installed. Default OS is assumed.
{os}-{type}centos-fullThe build of that OS and type with the specified git version installed.
{os}-{type}-{version}full-2.24.0The build of that type with the specified git version installed.
{os}-{type}-{version}-{commit}full-2.24.0The build of that type with the specified git version installed. Sure not to get updated as it has the id of the commit on the master branch as a unique identifier.
INTERNALTAGS(Do not use as may change)
{os}-basecentos-baseBase image used by all images of that OS. To speed things up and make sharing easier
{os}-build-basecentos-build-baseBase image used by all build images of that OS. Based on top of the normal base but with tools to compile git, e.g. gcc
{os}-build-{version}centos-build-2.24.0Image with the compiled git code for that version. Used as a cache layer to stop the real builds needing to compile each time. This does however have that version of git installed as well as compiled. It just doesn't have all the entrypoint wrapping of the real image and is quite a bit larger
docedocsA centos-based image that just prints out this README. Used to keep the README in dockerhub up to date
Operating Systems / Bases (os)
OSDescription
fedoraThe default OS.
centosThe latest centos OS. Currently pointing to centos8.
centos8Based on CentOS 8.
centos7Obsolete. Based on CentOS 7 but no longer updated. Old versions will still exist.
Types
TypeDescription
-Without a type, just a minimal image with git installed.
fullA fat image containing more tools like git-filter-repo, vim and git-lfs.

Running

Any commands passed to the image are passed directly to git (so 'show' will end up being 'git show'). Unless the first argument is sh or bash, in which case the command will just be executes as is (useful for starting interactive sessions).

Environmental Variables

The following variables will be acted upon:

  • VERBOSE: When not empty, it will cause the entrypoint script to log to the screen
  • CFG_XXX: Anything starting with CFG_ will be turned into a git system config e.g. CFG_USER_NAME="Joe Bloggs" will run: git config --system user.name "Joe Bloggs"
  • EXTERNAL_CONFIG_FILE: Path to optional config file. Defaults to /gitconfig
Examples
# A simple run to test the image:
docker run --rm bauk/git --help
docker run --rm bauk/git --version

# To start an interactive shell
docker run --rm -it bauk/git sh
docker run --rm -it bauk/git bash

# To run commands on a repo on your box:
docker run --rm --user $UID -v /path/to/host/repo:/git bauk/git show
docker run --rm --user $UID -v /path/to/host/repo:/git bauk/git log -n3

# To start an interactive session when you are currently inside the repo you want
docker run --rm -it --user $UID -v $PWD:/git bauk/git bash

# To load in your own git config file
docker run --rm -it -v ~/.gitconfig:/gitconfig bauk/git bash

# To load in an individual config item, e.g. user.name
docker run --rm -it -e "CFG_USER_NAME=Joe Bloggs" bauk/git config --list

# Putting it all together and starting an interactive session
#  where you are currently in the repo and you get to keep all
#  your aliases
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git bash

# Same as above, but specifying the version of git (for checking different versions)
# If the version is not specified, it uses the latest version of git
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git:1.8.2.3 bash
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git:1.9.5 bash
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git:2.12.5 bash
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git:2.24.0 bash

# To remove all of a.zip from the history of your repo (for space or security reasons)
# Ensure you run this on a fresh clone, and you will have to re-write all of history to get it back
docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git:full filter-repo --path a.zip --invert-paths
Setting this as your default git

If you do not have git installed on your box, you can use this. It will however take longer to run than a native git installation, but it might be the easiest way to get the latest git installed. I have used the dgit alias here, but if you do not have git at all or want to overwrite it, then you can use the git alias instead. Just add the following to your .bash_profile

alias dgit='docker run --rm -it --user $UID -v $PWD:/git -v ~/.gitconfig:/gitconfig bauk/git'

You can then just use this in place of git (e.g. dgit status). However if you find yourself using this a lot, you can reach out as there may be more efficient but complicated ways of running this (using a persistant docker image to speed up execution).

Custom git config

You can pass git config down to the image with environmental variables. e.g:

docker run --rm -it -e CFG_CORE_PAGER=less -e CFG_COLOR_UI=auto bauk/git config --list

Development/Builds

There is a tag for each corresponding docker build. The script setupTags.sh will do a build and basic test and push up each version as a tag to be built by dockerhub.

The master branch is the base for all new tags. To update tags, they need to be deleted and re-created from the new tip of master (for future master improvements).

Tag summary

Content type

Image

Digest

sha256:ff4b38507

Size

135 MB

Last updated

over 2 years ago

docker pull bauk/git