Git描述FOR / F命令中的条件致命错误

时间:2019-03-28 16:14:45

标签: git batch-file git-describe

这很奇怪。下面的代码在批处理文件中按预期工作:

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命令的环境有关?

1 个答案:

答案 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
)

工作正常。