获取受git monorepo最近提交影响的所有第一级目录的列表

时间:2017-11-30 01:17:02

标签: shell output monorepo

我目前正在使用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/srcproject1/lib

我已经尝试了一些选项,但到目前为止我还没有成功将其保留为单行。

1 个答案:

答案 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组合排序和唯一