I've defined a post-commit hook in .git/hooks that I want to also execute on the server side (Gitlab.com in my case).
Background: I'm using gitinfo2 along with a post-commit hook in a LaTeX project to quote info about the latest git tag within the pdf. This works well on my computer, but fails when I push the repo to Gitlab.
It doesn't cause an error, but gives the following warning, which basically means that the git hook never executed.
Package gitinfo2 Warning: I can't find the file '.git/gitHeadInfo.gin'.
(gitinfo2) All git metadata has been set to '(None)'.
From what I've read online so far, client side git hooks don't execute on the server - but why not? In a situation like this, I would want the hook to execute on both the client and the server.
So, basically, I want the sequence of events to be like this:
- I make a commit of the .tex file.
- I push the commit to Gitlab.
- Once it's at Gitlab, the git hook is executed leading to a file called
gitHeadInfo.ginbeing created in the.gitfolder. - The latex document is built using Gitlab CI, with the
gitinfopackage helping to pull the git version info fromgitHeadInfo.gin. - The pdf is deployed to Gitlab Pages.
I've got everything working except step 3. So, my current workaround is to build the pdf on my computer as well and commit it rather than relying on Gitlab CI.
Contents of the git hook:
#!/bin/sh
# Copyright 2015 Brent Longborough
# Part of gitinfo2 package Version 2
# Release 2.0.7 2015-11-22
# Please read gitinfo2.pdf for licencing and other details
# -----------------------------------------------------
# Post-{commit,checkout,merge} hook for the gitinfo2 package
#
# Get the first tag found in the history from the current HEAD
FIRSTTAG=$(git describe --tags --always --dirty='-*' 2>/dev/null)
# Get the first tag in history that looks like a Release
RELTAG=$(git describe --tags --long --always --dirty='-*' --match '[0-9]*.*' 2>/dev/null)
# Hoover up the metadata
git --no-pager log -1 --date=short --decorate=short \
--pretty=format:"\usepackage[%
shash={%h},
lhash={%H},
authname={%an},
authemail={%ae},
authsdate={%ad},
authidate={%ai},
authudate={%at},
commname={%cn},
commemail={%ce},
commsdate={%cd},
commidate={%ci},
commudate={%ct},
refnames={%d},
firsttagdescribe={$FIRSTTAG},
reltag={$RELTAG}
]{gitexinfo}" HEAD > .git/gitHeadInfo.gin