Почему я не могу запустить этот shell-скрипт, выдвигающий git из другого shell-скрипта? - PullRequest
0 голосов
/ 10 июля 2019

У меня проблема с запуском shell-скрипта, который в основном фиксирует изменения в каталоге в удаленном git-репозитории из другого скрипта. «Супер-скрипт» запускается с разрешениями суперпользователя, и у меня есть необходимые ssh-ключи, сгенерированные в ~ / .ssh / в домашнем каталоге моего суперпользователя. Кроме того, автономный запуск внутреннего скрипта работает нормально и отправляется в удаленный репозиторий.

Это ошибка, которую я получаю при запуске суперскрипта:

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 326 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
remote: GitLab: You are not allowed to push code to protected branches on this project.
To git@url.goes.here:groupspace/projectspace.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@url.goes.here:groupspace/projectspace.git'

и я вызываю внутренний скрипт с этой строкой кода, сохраняя его exit-status для дальнейшей обработки

SUCCESS = $(bash /path/to/push-config.sh)

Это содержимое push-config.sh

#!/bin/bash
# 
stamp=$(date +"%Y-%m-%d %T")

git add .
git commit -m "Config $stamp"

if [ $? -eq 0 ]
then
  git push -u origin master
  if [ $? -eq 0 ]
  then
    echo "Successfully pushed config to repo."
    exit 0
  else
    echo "Failure while pushing to repo."
    exit 1
  fi
else
  exit 1
fi

Любая помощь приветствуется, спасибо заранее.

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Поскольку вы отклонены из-за перехвата git pre-receive, перехватчик проверяет вас на том, что вы неправильно установили в своем суперскрипте или в среде, в которой вы запускали верхний индекс.

Выполнитесравнение коммитов, созданных при запуске верхнего и внутреннего скриптов.Убедитесь, что они оба идентичны.

Далее, убедитесь, что ваша среда git одинакова для обоих нажатий.Под этим я подразумеваю, что переменная пользователя git должна быть такой же, и что ваш текущий рабочий каталог должен совпадать с хранилищем.

Вам будет проще отладить это, если вы точно проверили, что предварительное получениекрюк проверяет.

0 голосов
/ 10 июля 2019

У пользователя root есть собственный домашний каталог.Я полагаю, у вас есть ключ ssh в вашей домашней папке (~/.ssh, как вы упомянули).Либо добавьте ключ ssh в папку .ssh в доме пользователя root, либо см. Как указать закрытый SSH-ключ для использования при выполнении команды оболочки в Git?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...