guilt: allow guilt-push to opt out of head checking

Depending on the method used to construct a tree, it is entirely
possible that branches are not only made up of guilt created commits.
This mixed mode is valid, and in particular is valid when applying
patches to a tree. 

In the default mode of operation, you will see a warning such as
this when working on a branch:

Expected HEAD commit dbd5861f81a92b8b329561f94b8575c7ee6768b6
                 got 3e8e6f6bd9f1772b91fc1fe9949f541d0560b487

This looks severe, but is harmless during tree construction, 
since even if the HEAD commit was expected, you can still run into
issues pushing a patch. This is particularly seen when templates are
adding patches to a kernel.

To make this look less ominous, we make the head check for patch
pushing opt-in. Which means that by default, you'll no longer see 
this warning if you work with a mixed mode branch during tree 
construction.

Other modes such as pop or refresh can run into problems when 
the HEAD commit isn't tracked or expected, so they should remained 
checked.

Upstream-Status: Inappropriate [oe-specific]

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>

---
 guilt      |    3 +++
 guilt-push |    3 +++
 2 files changed, 6 insertions(+)

--- a/guilt
+++ b/guilt
@@ -417,6 +417,9 @@ head_check()
 			return 0 ;;
 	esac
 
+	# If do_head_check isn't set, bail, we are "opt-in"
+	[ -z "$do_head_check" ] && return 0
+
 	if [ "`git rev-parse refs/heads/$branch`" != "`git rev-parse $1`" ]; then
 		disp "Expected HEAD commit $1" >&2
 		disp "                 got `git rev-parse refs/heads/$branch`" >&2
--- a/guilt-push
+++ b/guilt-push
@@ -23,6 +23,9 @@ while [ $# -gt 0 ]; do
                         tag=$2
                         shift
                         ;;
+                --head_check)
+                        do_head_check=t
+                        ;;
 		*)      
 			break
 			;;
