Git опишите условную фатальную ошибку в команде FOR / F - PullRequest
1 голос
/ 28 марта 2019

Это странно.Код ниже работает, как и ожидалось, внутри пакетного файла:

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?

1 Ответ

0 голосов
/ 29 марта 2019

Благодаря elzooilogico.

Как указано здесь , = необходимо экранировать как ^= при использовании в теме команды FOR /F.

Без escape я думаю, что 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
)

Работал как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...