Git相对路径问题-在路径中找不到可定位文件

萨扎德(Sazzad Hissain Khan)

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

home/user/git_root/docs
home/user/git_root/project
home/user/git_root/project/project.xcodeproj

如您所见,我的git_root目录在docs文件夹中还有其他一些文档以及实际的项目目录。

我已经swiftlint使用自制软件在Mac中安装了该软件,

brew install swiftlint

swiftlint的当前安装位置是

which swiftlint
/usr/local/bin/swiftlint

当我运行添加在中的以下脚本Build phase -> Run scripts时,发生了奇怪的事情,

脚本:

if which swiftlint >/dev/null; then
    echo "swiftlint already installed in machine";
    git diff --cached --name-only | grep "\.swift" | while read filename; do
        echo "swiftlinting file $filename";
        swiftlint lint --path "$filename";
    done
fi

问题:

一些快速文件通过回显方式打印,但swiftlint找不到文件并产生以下错误,

在路径中找不到可定位文件:”

例如,以下是构建日志的输出,

swiftlinting文件项目/a.swift

在路径:'project / a.swift上找不到可定位文件

但是,当我cd home/user/git_root在脚本的开头应用时,它可以完美运行。但是我不知道git的实际根目录,因为其他队友可能会自己重命名它,因此,我无法在脚本中使用硬编码路径。

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

可选信息:

该脚本的目的是仅在新修改的未暂存swift文件中运行swiftlint。另请注意,我没有.swiftlint.yaml为swiftlint配置使用任何文件。

Marosoaie

看来--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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章