机器可读格式的Git状态,具有相对于当前目录的路径
是否可以以机器可读格式(机器可读格式的Git状态,具有相对于当前目录的路径,git,Git,是否可以以机器可读格式(-z)但使用相对于当前目录的路径(-s)输出git status 当前,当我使用-z-s时,路径的格式改为相对于repo root git status -z | sed "s:\(^\|\x00\).. :\0$(git rev-parse --show-cdup):g" 此命令获取根目录的相对路径,并将其注入状态输出,以便这些路径再次相对于当前工作目录 免责声明:此sed脚本可能不适用于所有版本的sed此sed不适用于FreeBSD(不确定MacOS)。我认为sed
-z
)但使用相对于当前目录的路径(-s
)输出git status
当前,当我使用-z-s
时,路径的格式改为相对于repo root
git status -z | sed "s:\(^\|\x00\).. :\0$(git rev-parse --show-cdup):g"
此命令获取根目录的相对路径,并将其注入状态输出,以便这些路径再次相对于当前工作目录
免责声明:此
sed
脚本可能不适用于所有版本的sed
此sed
不适用于FreeBSD(不确定MacOS)。我认为sed正则表达式不适用于嵌入式NUL,尽管可能还有其他问题。但这通常是正确的想法:我们必须在事后用--show cdup
results解决问题。@torek我没有可用的FreeBSD。告诉我如何在FreeBSD上正确地执行此操作,我会很高兴地更新我的答案。我会使用一个功能更强大的过滤器,可能是Perl(尽管我非常讨厌Perl:-)。或者只是在机器读取git status-z
machine-readable输出的任何情况下执行此操作……但不一定安装Perl。例如,在Git for Windows或Cygwin安装上。除此之外,如果OP想要使用perl或任何他用来读取数据的工具,他可以阅读答案作为如何操作的秘诀符合事实的(我现在倾向于自己用Python写这类东西,但不是所有的安装都有Python。)我想值得注意的是,并不是所有的sed
s都能把这当作一个警告来处理,否则只需将答案保留为“这就是想法”。。。