这很奇怪。下面的代码在批处理文件中按预期工作:
foos
当我尝试添加--abbrev选项时,出现致命错误:
FOR /F "tokens=1,2,3,* delims=-" %%G IN (
'git describe --long --always --dirty --broken'
) do (
set tag_name=%%G
set versions_from_tag=%%H
set hash=%%I
set dirty_broken=%%J
)
输出:FOR /F "tokens=1,2,3,* delims=-" %%G IN (
'git describe --long --always --dirty --broken --abbrev=8'
) do (
set tag_name=%%G
set versions_from_tag=%%H
set hash=%%I
set dirty_broken=%%J
)
但是,如果我在FOR / F之外运行命令,它会按预期工作:
fatal: --dirty is incompatible with commit-ishes
输出git describe --long --always --dirty --broken --abbrev=8
我假设这可能与2.11-13-ga03306e6-dirty
命令的环境有关?
答案 0 :(得分:0)
感谢elzooilogico。
详细的here中,=
在^=
命令的主题中使用时,必须像FOR /F
一样转义。
没有转义,我认为8被当作提交字符串。
FOR /F "tokens=1,2,3,* delims=-" %%G IN (
'git describe --long --always --dirty --broken --abbrev^=8'
) do (
set tag_name=%%G
set versions_from_tag=%%H
set hash=%%I00
set dirty_broken=%%J
)
工作正常。