Настроив деплой проекта из репозитория (например так) хочется чтобы приходили уведомления о совершенном деплое и чтобы все это было красиво оформленно. Для этого необходимо понять как выводить нужную информацию в промежутке между прошлым последним коммитом и текущим HEAD.
Для начала смотрим как работать с историей коммитов (вот еще), находим там интересную опцию --pretty
. Эта опция позволяет настроить вывод информации о коммите. Например так:
bashgit log --pretty=format:"%h - %an/%cn, %ar : %s" 506dca7 - Byurrer/Byurrer, 4 часа назад : adapted table names for tests edd43d0 - Byurrer/Byurrer, 7 часов назад : small fixeds 18575eb - Byurrer/Byurrer, 7 часов назад : added select db redis
Или так:
bashgit log --pretty=oneline 506dca7724f2c94511f0128d34b57c919abd70f0 (HEAD -> dev, origin/dev) adapted table names for tests edd43d00722a835a6ec24df14c38e103894d4128 (master) small fixeds 18575eb3c91f6ac298b9a7e0113471f0f5ddff59 added select db redis
Теперь нужно выбрать коммиты, по которым будем показывать информацию. Это можно сделать так:
bashgit log --pretty=format:'%h - %an/%cn, %ar : %s' from..to
Где [from, to] это коммиты от и до куда (включительно) нужно показать историю.
Чтобы показать историю с прошлого коммита до самого свежего (задеплоенного), нужно перед принятием изменений из репозитория pull
получить указатель на HEAD
. Сделать это можно несколькими способами.
Получить полный SHA-1
хэш коммита:
bashgit rev-parse HEAD edd43d00722a835a6ec24df14c38e103894d4128
Или так:
bashgit log -n 1 --pretty=format:"%H" edd43d00722a835a6ec24df14c38e103894d4128
Получить короткий хэш:
bashgit log -n 1 --pretty=format:"%h" edd43d0
Получить хэш последнего коммита в нужной ветке:
bashgit show-ref --heads --hash master edd43d00722a835a6ec24df14c38e103894d4128
Теперь можно получить последний старый коммит, принять изменения и вывести форматированную историю изменений, которую вносит деплой:
На почту/мессенджер приходит что-то типа такого:bashOldCommit=$(git rev-parse HEAD) git pull git log --pretty=format:'%h - %an/%cn, %ar : %s' dev $OldCommit..HEAD
plaintextmyapp deployed edd43d0 - Byurrer/Byurrer, 3 hours ago : small fixeds 18575eb - Byurrer/Byurrer, 3 hours ago : added select db redis