When a branch history is changed on the remote, you typically get
o git@git.server.com:XXXXX/Project.git
+ efe2e8b...cda0ee7 HEAD -> Ant_Config_processin
You can use git-merge-base command, it finds nearest common ancestor for two commits.
For fast-forward update, common ancestor for oldrev and newrev must point to oldrev. Sample code to be put into pre-receive hook to block non fast-forward:
mergebase=`git merge-base $oldrev $newrev`
if [ "$oldrev" != "$mergebase" ]; then
echo "Non fast-forward update not allowed for $refname, from ${oldrev:0:16} to ${newrev:0:16} merge base ${mergebase:0:16}"
exit 1
fi