Попытка заставить этот короткий Makefile работать безуспешно:
REPO_NAME = myrepo
PROJECT = project
build: check-if-repo-exists
check-if-repo-exists:
$(eval RESULT := $(shell git ls-remote ssh://git-user@git-server-demo.org/$(PROJECT)/$(REPO_NAME).git 2>/dev/null|grep HEAD|cut -f2 -d' ' 2>/dev/null))
@printf "REPO-->$(RESULT)\n"
ifneq (,$(findstring HEAD,$(RESULT)))
@printf "git repository - NOT found\n"
else
@printf "git repository - found \n"
endif
Результат всегда
Git-репозиторий - найдено
Не заботится, если хранилище существует или не существует.Есть ли возможное решение?Я также попробовал другой подход, используя bash-подобные операторы if, такие как
@if [ "$(REPO)" == "HEAD" ] ; then \
@printf "git repository - found \n";\
@$(eval MY_ERROR := $(shell printf "TRUE"))
fi
Результат получше, но я все еще не могу установить переменную, чтобы использовать ее в другом правиле.Переменная MY_ERROR не будет доступна в новом правиле.Я понимаю, что в Makefiles правила не выполняются последовательно, как в Bash, но имеет смысл проверить, доступен ли репозиторий перед сборкой приложения.Любые предложения, используя make?Это легко сделать с Bash, но я теряю преимущества Makefiles, и использование комбинации обоих не является предпочтительным вариантом.Заранее спасибо за помощь.