Я определил хук после фиксации в .git/hooks
, который я также хочу выполнить на стороне сервера ( Gitlab.com в моем случае).
Справочная информация: IЯ использую gitinfo2 вместе с ловушкой post-commit в проекте LaTeX для цитирования информации о последнем теге git в pdf.Это хорошо работает на моем компьютере, но не работает, когда я отправляю репо в Gitlab.
Это не вызывает ошибку, но выдает следующее предупреждение, которое в основном означает, что ловушка git никогда не выполнялась.
Package gitinfo2 Warning: I can't find the file '.git/gitHeadInfo.gin'.
(gitinfo2) All git metadata has been set to '(None)'.
Из того, что я читал в Интернете до сих пор, клиентские git-хуки не выполняются на сервере - но почему бы и нет?В такой ситуации я хотел бы, чтобы ловушка выполнялась как на клиенте, так и на сервере.
Итак, в общем, я хочу, чтобы последовательность событий была такой:
- Я делаю фиксацию из файла .tex.
- Я отправляю коммит в Gitlab.
- Как только он попадает в Gitlab, выполняется ловушка git, приводящая к созданию файла с именем
gitHeadInfo.gin
.в папке .git
. - Латексный документ создается с использованием Gitlab CI, а пакет
gitinfo
помогает извлечь информацию о версии git из gitHeadInfo.gin
. - PDF развернутto Gitlab Pages .
У меня все работает, кроме шага 3. Итак, мой текущий обходной путь - это также создать pdf на моем компьютере и зафиксировать его, а не полагаясь на негона Gitlab CI.
Содержимое крючка git:
#!/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