Git 描述 FOR /F 命令中的条件性致命错误
Git describe conditional fatal error in FOR /F command
这很奇怪。下面的代码在批处理文件中按预期工作:
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
)
当我尝试添加 --abbrev 选项时,出现致命错误:
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
)
输出:fatal: --dirty is incompatible with commit-ishes
但是如果我 运行 在 FOR /F 之外的命令它会按预期工作:
git describe --long --always --dirty --broken --abbrev=8
输出2.11-13-ga03306e6-dirty
我假设这可能与 FOR /F
命令的环境有关?
感谢 elzooologico。
详述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
)
按预期工作。
这很奇怪。下面的代码在批处理文件中按预期工作:
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
)
当我尝试添加 --abbrev 选项时,出现致命错误:
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
)
输出:fatal: --dirty is incompatible with commit-ishes
但是如果我 运行 在 FOR /F 之外的命令它会按预期工作:
git describe --long --always --dirty --broken --abbrev=8
输出2.11-13-ga03306e6-dirty
我假设这可能与 FOR /F
命令的环境有关?
感谢 elzooologico。
详述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
)
按预期工作。