Как я могу git commit --no-edit, но также взять имя автора / адрес электронной почты последнего коммита? - PullRequest
0 голосов
/ 01 мая 2020

Наша сборка CI выполняет git слияние --squa sh $ BRANCH с мастером, а затем выполняет git commit --no-edit, и если сборка проходит, она выталкивает master (наш CI является единственным тот, кто может справиться с sh).

Однако, в настоящее время наши git журналы выглядят так

enter image description here

I предпочел бы установить в сообщении, возможно, имя ответвления + все сдавленные коммиты (добавление -m удаляет все сдавленные коммиты :(), присваивает пользователю имя пользователя последнего коммита и устанавливает в электронном письме последний коммит. Это возможно?

1 Ответ

1 голос
/ 02 мая 2020

Вы можете установить имя коммиттера и адрес электронной почты, когда выполняете squa sh, установив для переменных среды GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL соответствующее значение. Это заменит значение по умолчанию и позволит вам настроить его.

Что касается изменения сообщения, вам не нужно --no-edit, потому что вы действительно хотите его отредактировать, но вы также не хотите -m, потому что это переопределяет все сообщение. Что вам действительно нужно, так это скрипт, который редактирует ваше сообщение коммита для использования в качестве редактора.

Вы действительно можете указать такой скрипт, используя GIT_EDITOR, и он должен принимать один аргумент в качестве имени файла чтобы отредактировать, он должен отредактировать его на месте (или перезаписать файл своей копией), и он должен выйти из 0. Если вы используете стандартную среду Unix, сценарий оболочки, который вызывает программу, такую ​​как ex или ed может быть хорошим выбором. Вы также можете использовать sed для записи во временный файл, а затем mv поверх исходного файла.

Таким образом, ваш вызов будет выглядеть примерно так:

GIT_COMMITTER_NAME="$(git log -1 --format=%an "$BRANCH")" \
  GIT_COMMITTER_EMAIL="$(git log -1 --format=%ae "$BRANCH")" \
  GIT_EDITOR="script/to/merge-editor" \
  git merge --squash "$BRANCH"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...