Ios Git相对路径问题-在路径处未找到可挂起的文件

Ios Git相对路径问题-在路径处未找到可挂起的文件,ios,xcode,bash,git-diff,swiftlint,Ios,Xcode,Bash,Git Diff,Swiftlint,我在git版本控制系统下有一个iOS/Swift项目。层次结构如下: home/user/git_root/docs home/user/git_root/project home/user/git_root/project/project.xcodeproj 如您所见,我的git_root目录包含docs文件夹中的一些其他文档以及实际的项目目录 我已使用自制软件在Mac电脑中安装了swiftlint brew install swiftlint swiftlint的当前安装位置为 whic

我在git版本控制系统下有一个iOS/Swift项目。层次结构如下:

home/user/git_root/docs
home/user/git_root/project
home/user/git_root/project/project.xcodeproj
如您所见,我的
git_root
目录包含
docs
文件夹中的一些其他文档以及实际的项目目录

我已使用自制软件在Mac电脑中安装了
swiftlint

brew install swiftlint
swiftlint的当前安装位置为

which swiftlint
/usr/local/bin/swiftlint
当我运行我在
构建阶段->运行脚本中添加的下面的脚本时,奇怪的事情发生了

脚本: 问题: 一些swift文件是通过echo打印的,但是
swiftlint
找不到文件,并产生以下错误

在路径“”处未找到可忽略的文件

例如,下面是生成日志的输出

swiftling文件项目/a.swift

在路径:“project/a.swift”处未找到可挂起的文件

但是当我在脚本开头应用
cd home/user/git_root
时,它工作得非常好。但我无法知道git的实际根,因为其他队友可能会自己重命名它,因此,我无法在脚本中使用硬编码路径

为什么
git diff
会从脚本中的同一目录生成
swiftlint
无法识别的文件路径?我怎样才能解决这个问题

可选信息: 该脚本的目的是仅在新修改的未老化swift文件中运行swiftlint。还要注意,我没有使用任何
.swiftlint.yaml
文件进行swiftlint配置。

似乎--path参数只采用绝对路径。我不知道如何使其采用相对路径,但可以稍微修改脚本,将路径的其余部分附加到文件名,如下所示:

git diff --cached --name-only | grep "\.swift" | while read filename; do
    echo "swiftlinting file $filename";
    swiftlint lint --path "$(git rev-parse --show-toplevel)/${filename}";
done
似乎--path参数只接受绝对路径。我不知道如何使其采用相对路径,但可以稍微修改脚本,将路径的其余部分附加到文件名,如下所示:

git diff --cached --name-only | grep "\.swift" | while read filename; do
    echo "swiftlinting file $filename";
    swiftlint lint --path "$(git rev-parse --show-toplevel)/${filename}";
done