Как добавить пользовательские хуки на стороне сервера в Gitlab? - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь добавить свои хуки в репо на сервере, чтобы тот, кто клонировал репо, прошел через это перед отправкой на сервер Gitlab. На данный момент я создал файл pre-receive в папке custom_hooks в /. Git / custom_hooks и добавил к нему скрипт. Ниже приведен мой файл предварительного получения.

#!/bin/bash

zero_commit="0000000000000000000000000000000000000000"
excludeExisting="--not --all"

while read oldrev newrev refname; do
  # echo "payload"
  echo $refname $oldrev $newrev

  # branch or tag get deleted
  if [ "$newrev" = "$zero_commit" ]; then
    continue
  fi

  # Check for new branch or tag
  if [ "$oldrev" = "$zero_commit" ]; then
    span=`git rev-list $newrev $excludeExisting`
  else
    span=`git rev-list $oldrev..$newrev $excludeExisting`
  fi

  for COMMIT in $span;
  do
    for FILE  in `git log -1 --name-only --pretty=format:'' $COMMIT`;
    do
        echo "rejecting all pushes"
        exit 1
    done
  done
done
exit 0

Затем я клонировал репо на локальном компьютере Windows и попытался отправить его. Но ожидаемого эффекта это не произвело. Он все еще был отправлен на сервер.

Я новичок в Gitlab и Git хуках. Я не знаю, неверен ли мой файл pre-receive или я ошибаюсь. Пожалуйста, позвольте мне добавить хуки на сервер, чтобы он проверял / работал для тех, кто клонировал мое репо. Пожалуйста помоги. Заранее спасибо.

1 Ответ

0 голосов
/ 08 мая 2020

См. https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks, который начинается с:

Как и многие другие системы контроля версий, Git имеет способ запускать пользовательские сценарии при выполнении определенных важных действий. Эти хуки делятся на две группы: на стороне клиента и на стороне сервера. Перехватчики на стороне клиента запускаются такими операциями, как фиксация и слияние, в то время как перехватчики на стороне сервера выполняются при сетевых операциях, таких как получение отправленных коммитов. Вы можете использовать эти крючки по разным причинам.

См. Также https://docs.gitlab.com/ee/administration/server_hooks.html

...