How-to use Git integration
This article details how to enable Git version control for WATO within Checkmk.
LAST TESTED ON CHECKMK 2.3.0P1
Step-by-step guide
Go to Setup → General → Global Settings → Edit global setting.
Place an X to enable GIT version control.
Click Save.
.Activate changes.
Git ignore
By default, Checkmk creates the following .gitignore files:
~/etc/check_mk/.gitignoreOMD[mysite]:~/etc/check_mk$ cat .gitignore # This file is under control of Checkmk. Please don't modify it. # Your changes will be overwritten. * !*.d !.gitignore *swp *.mk.new
~/etc/check_mk/conf.d/.gitignoreOMD[mysite]:~/etc/check_mk/conf.d$ cat .gitignore * !wato
~/etc/check_mk/conf.d/wato/.gitignoreOMD[mysite]:~/etc/check_mk/conf.d/wato$ cat .gitignore !*
Push to a remote repository
Add repository
OMD[mysite]:~/etc/check_mk$ git remote add origin https://github.com/mygituser/test.git.
Setup the upstream branch
OMD[mysite]:~/etc/check_mk$ git push --set-upstream origin mybranchname.
Verify the git configuration
OMD[mysite]:~/etc/check_mk$ cat ~/etc/check_mk/.git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [user] email = check_mk name = check_mk [remote "origin"] url = https://github.com/mygituser/test.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "mybranchname"] remote = origin merge = refs/heads/mybranchname.
Push local configuration to mybranchname
OMD[mysite]:~/etc/check_mk$ git push --set-upstream origin mybranchnameUsername for 'https://github.com': mygituser Password for 'https://mygituser@github.com': Enumerating objects: 65, done. Counting objects: 100% (65/65), done. Delta compression using up to 8 threads Compressing objects: 100% (55/55), done. Writing objects: 100% (65/65), 30.69 KiB | 10.23 MiB/s, done. Total 65 (delta 6), reused 39 (delta 1), pack-reused 0 remote: Resolving deltas: 100% (6/6), done. To https://github.com/mygituser/test.git * [new branch] mybranchname -> mybranchname Branch 'mybranchname' set up to track remote branch 'mybranchname' from 'origin'..
Automate Git push
If you would like to automate Git push, you can do this with a Git post commit hook
Create the post-commit file
OMD[mysite]:~$ vi ~/etc/check_mk/.git/hooks/post-commit.
Add the following
~/etc/check_mk/.git/hooks/post-commit#!/bin/sh git push -u origin mybranchname.
Save the file
.Make the file executable
OMD[mysite]:~$ chmod +x ~/etc/check_mk/.git/hooks/post-commit
Useful commands
Show changes before commit
git diff.
View system status
git status.
Automatically record changed files
git add . -A.
Transfer all files to the repository
git commit -am "There is a comment here".
This command shows what has happened so far
git log.
Write all recent changes to a file
git format-path -1.
Which files were changed?
git diff --stat.
Apply patch files from other participants: First only in test mode, then really:
git apply --check patchdate
git apply patchdate.
Create a directory and fetch repository (e.g., via https):
mkdir gitlocal ; cd gitlocal
git clone 'https://user@server.de/repository'.
Create a local branch
git branch mybranch.
Switch to a local branch
git checkout mybranch.
Show Branches
git branch.
Back to mybranchname and pick up changes
git checkout mybranchname
git pull.
Apply changes to the mybranchname branch
git checkout mybranch
git rebase master.
Transfer changes to the remote repository
git push origin mybranch:master
Customize your shell prompt always to show the branch you are working on. Add Git additional information.
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="legacy verbose git"
export PS1='\u@\h:\w$(__git_ps1 " (%s)")\$ .
If you get an error message saying that git_ps1 cannot be executed, add the following line to the .bashrc:
. /etc/bash_completion.d/git