3

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

我现在需要的是确保我只检索第一级文件夹,即project1project1/srcproject1/lib

我尝试了一些选择,但到目前为止我还没有设法将它保持为一个班轮。

4

1 回答 1

2

这是一个解决方案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组合排序和唯一性

于 2017-11-30T04:49:28.197 回答