Как мне запретить 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"