Как мне остановить git от упаковки аннотаций тегов, когда нет tty? - PullRequest
0 голосов
/ 30 апреля 2018

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

0 голосов
/ 30 апреля 2018

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

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

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

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

MSG=$(git tag -l --format '%(contents)' release-1.00)
echo "$MSG"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...