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

Проверить, существуют ли папки в репозитории Git ... проверка, существует ли подстрока в bash с NULL в качестве разделителя

У меня есть общий сценарий git "post-receive" для нескольких проектов, и он должен выполнять разные действия, если в корне существует папка / app / или / public /.

С помощью:

FOLDERS=`git ls-tree -d --name-only -z master`;

Я вижу список каталогов, и я хотел бы использовать поддержку RegExp в bash, чтобы запустить что-то вроде:

if [[ "$FOLDERS" =~ app ]]; then
    ...
fi

Но это не сработает, если будет что-то вроде "приложение lication "папка ... Я указал параметр" -z "в команде git" ls-tree ", чтобы я мог использовать символ \ 0 (null) в качестве разделителя, но не знаю, как проверить это в bash RegExp .

Точно так же я знаю, что существует поддержка для указания конкретного пути в команде ls-tree, и я мог бы затем передать его по конвейеру "wc -l", но я подумал, что было бы быстрее получить полный список каталогов корня (не рекурсивно), затем проверьте наличие 2 (или более) папок с возвращенным выводом.

Возможно связано с: https://stackoverflow.com/questions/7938094/git-how-to-check-which-files-exist-and-their-content-in-a-shared-bare-repos

Похоже, что символ NULL потерян (или проигнорирован), как будто в листинге есть «app» и «httpd», он будет соответствовать строке «apphttpd».

Итак, я пошел с вызовом "git ls-tree" несколько раз, чтобы увидеть, существует ли каждый отдельный файл.

if [ `git ls-tree -d --name-only master "$F" | wc -l` -eq 1 ]; then
fi