I want to use
core.hooksPathwhich supports since 2.9, but the default Git version of CentOS 7.3 is still 1.8.3:
$ yum list git Available Packages git.x86_64 220.127.116.11-6.el7_2.1 base
I have to compile from the source by myself. It is not hard to find bunch of blogs explain how to do it. For example, https://www.howtoforge.com/how-to-install-the-latest-git-version-on-centos. However, the method mentioned in those blogs is not what I want, a docker image based on
centos:7with the latest Git version. There are questions I don’t know the answers:
- How can I clean up those required build tools like gcc? I don’t want a larger image size.
- How can I install Git manuals? I could not remember all commands and parameters. It will be handy to reference by just typing
git help xxx.
I believe the clean way is to build Git in RPM and install Git using RPM in my docker image. Sounds easy, but the first problem I had was where to get
.specto build RPM. The Git source code doesn’t have a RPM spec file. I finally found the spec from Redhat. But it is not easy like Gradle or Maven when you build from a RPM spec. You have to know the tools to pull the dependencies. Finally, my method is actually pretty simple after I figured it out all of steps because I made it in a dockerfile. Here are what I did:
- I created a docker image
git-rpm, which builds Git 2.12.2 in RPMs.
- When running
git-rpmin a container, a yum repository server starts.
- When I build the docker image, I just simply put the local yum repository for Git, and call
yum install -y git.
centos:7, the default configuration turns off the manual installation
tsflags=nodocs. I need to turn it on using
yum --setopt tsflags='' -y install git.
If you want to get those RPMs from docker and put them to a yum repository, you can run