我目前正在使用monorepos,我正在尝试检索repo中所有1级子文件夹的列表,这些子文件夹在给定提交后受到影响。
到目前为止,我可以使用git diff --name-only $COMMIT_ID..head
使用git diff --name-only $COMMIT_ID..head | xargs -L1 dirname
我设法只获取文件夹名称。
要删除我添加sort | uniq
混合的所有重复项:git diff --name-only $COMMIT_ID..head | xargs -L1 dirname | sort | uniq
我现在需要的是确保我只检索第一级文件夹,即project1
而非project1/src
和project1/lib
我已经尝试了一些选项,但到目前为止我还没有成功将其保留为单行。
答案 0 :(得分:1)
以下是awk
git diff --name-only $COMMIT_ID | awk -F'/' 'NF!=1{print $1}' | sort -u
-F'/'
将分隔符字段设置为斜杠/
NF!=1{print $1}
打印出第一个字段,如果该行包含斜杠/
,则该字段是第一级目录名称,这会过滤掉第一级中存在的文件
readme.md NF==1
project1/file NF==2
project2/src/file NF==3
sort -u
组合排序和唯一