#!/bin/sh MSG="$1" # Check for, and add if missing, a unique Change-Id # add_ChangeId() { if grep '^Change-Id: ' "$MSG" >/dev/null then return fi id=$(_gen_ChangeId) out="$MSG.new" ftt="$MSG.footers" sed -e '/^[A-Za-z][A-Za-z0-9-]*: /,$d' <"$MSG" >"$out" sed -ne '/^[A-Za-z][A-Za-z0-9-]*: /,$p' <"$MSG" >"$ftt" if ! [ -s "$ftt" ] then echo >>"$out" fi echo "Change-Id: I$id" >>"$out" cat "$ftt" >>"$out" mv -f "$out" "$MSG" rm -f "$out" "$ftt" } _gen_ChangeIdInput() { echo "tree $(git write-tree)" if parent=$(git rev-parse HEAD^0 2>/dev/null) then echo "parent $parent" fi echo "author $(git var GIT_AUTHOR_IDENT)" echo "committer $(git var GIT_COMMITTER_IDENT)" echo cat "$MSG" } _gen_ChangeId() { _gen_ChangeIdInput | git hash-object -t commit --stdin } add_ChangeId