我有一个用于几个项目的普通git“post-receive”脚本,如果根目录中存在/ app /或/ public /文件夹,它需要执行不同的操作。
使用:
FOLDERS=`git ls-tree -d --name-only -z master`;
我可以看到目录列表,我想在bash中使用RegExp支持来运行如下所示的内容:
if [[ "$FOLDERS" =~ app ]]; then ... fi
但是,如果有像“ 应用程序 ”文件夹那样的话,那么这将不起作用…我在git“ls-tree”命令中指定了“-z”选项,所以我可以使用\ 0(空)字符作为分隔符,但不知道如何testing在bash RegExp。
同样,我知道支持在ls-tree命令中指定一个特定的path,然后可以将其转换为“wc -l”,但是我认为获得完整的根目录列表(不是recursion),然后用返回的输出testing2(或更多)文件夹。
可能涉及到: https : //stackoverflow.com/questions/7938094/git-how-to-check-which-files-exist-and-their-content-in-a-shared-bare-repos
它看起来像空字符丢失(或忽略),就好像列表中包含“app”和“httpd”,它将匹配string“apphttpd”。
所以我已经多次调用“git ls-tree”来查看每个单独的文件是否存在。
if [ `git ls-tree -d --name-only master "$F" | wc -l` -eq 1 ]; then fi