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 --- 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 ;;