Назад | Перейти на главную страницу

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

В принципе, у меня есть сервер с репозиторием git origin. Я пытаюсь сделать еще одно автоматическое извлечение репо из источника каждый раз, когда кто-то нажимает на него код. Я использовал крючки в origin, особенно post-receive. Пока что мой пост получил примерно так:

#!/bin/sh
GIT_DIR=/home/<user>/<test_repo>
git pull origin master

Но когда я нажимаю на источник с другого компьютера, я получаю сообщение об ошибке:

remote: fatal: Not a git repository: '/home/<user>/<test_repo>'

Однако test_repo определенно является репозиторием git. Я могу войти в него и запустить «git pull origin master», и он отлично работает.

Есть ли более простой способ сделать то, что я пытаюсь сделать? Если нет, что я делаю не так с этим подходом? Заранее спасибо.

Отредактируйте, чтобы уточнить: репо - это веб-сайт в разработке, и я хотел бы, чтобы его версия всегда была доступна в полном объеме.

Когда вы устанавливаете переменную среды, она доступна только в этой оболочке, поэтому при запуске другой программы, такой как git, локальные переменные не передаются. Допустим, у нас есть test.sh:

#!/usr/bin/bash
echo "GIT_DIR=$GIT_DIR"

Теперь давайте посмотрим на следующие примеры

$ GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
$ ./test.sh
GIT_DIR=

Это потому, что переменная среды не получила экспортируется к запущенной программе.

$ export GIT_DIR=LOOK_MY_GIT_DIR_IS_SET
$ ./test.sh
GIT_DIR=LOOK_MY_GIT_DIR_IS_SET

В примере ScottZ установка переменной среды при запуске программы приводит к тому, что она экспортируется ТОЛЬКО для этой команды.

$ GIT_DIR=LOOK_MY_GIT_DIR_IS_SET ./test.sh
GIT_DIR=LOOK_MY_GIT_DIR_IS_SET

Надеюсь это поможет!

Я использую похожую ловушку, но GIT_DIR должен указывать на подкаталог .git.

#!/bin/sh
cd /home/<user>/<test_repo>
GIT_DIR=.git git pull origin master

Вы уверены, что правильно устанавливаете GIT_DIR?

Я предполагаю, что вы используете репо, отличное от голого, в этом случае ваш GIT_DIR должен быть

GIT_DIR=/home/user/test_repo/.git

Чтобы проверить это, запустите в командной строке следующее:

GIT_DIR=/home/user/test_repo/.git git status