У меня есть аннотация тега 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)'