Как мне запретить git упаковывать аннотации тегов, когда нет tty?

У меня есть аннотация тега Git, которая гласит:

Release 1.0
   - Fixes issue 1
   - Fixes issue 2

Тем не менее, если я читаю эту информацию в сценарии с помощью $() там, где нет TTY, Git соберет все в одну строку:

MSG=$(git tag -l --format '%(contents)' release-1.00)
echo $MSG

Результат:

Release 1.0 - issue 1 - issue 2

Как мне получить его для вывода оригинальной аннотации?


Не помещая его в сценарий, выходные данные точно такой же команды являются содержимым аннотации в точности так, как она была создана:

git tag -l --format '%(contents)' release-1.00

Результат:

Release 1.0
   - Fixes issue 1
   - Fixes issue 2

К вашему сведению: Использование git tag -n99 release-1.00 делает то же самое. Я отправился на поиски исходного кода Git, чтобы попытаться ответить на мой вопрос, и тем временем обнаружил, что -n99 внутренне переведен на --format '$(contents:lines=99)'

1 ответ

Решение

Кажется, поведение эха.

Вместо этого:

MSG=$(git tag -l --format '%(contents)' release-1.00)
echo $MSG

будет хорошо:

MSG=$(git tag -l --format '%(contents)' release-1.00)
echo "$MSG"
Другие вопросы по тегам