#!/bin/sh
# From Gerrit Code Review v2.0.18-100-g98fc90a
#
# Part of Gerrit Code Review (http://code.google.com/p/gerrit/)
#
# Copyright (C) 2009 The Android Open Source Project
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# 

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  '2,${
			/^[A-Za-z][A-Za-z0-9-]*: /,$d
		}' <"$MSG" >"$out"
	sed -ne '2,${
			/^[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
