]> code.ossystems Code Review - openembedded-core.git/commitdiff
linux-yocto: update validate_branches to detected invalid commit IDs
authorBruce Ashfield <bruce.ashfield@windriver.com>
Mon, 17 Jan 2011 21:34:58 +0000 (16:34 -0500)
committerSaul Wold <sgw@linux.intel.com>
Wed, 19 Jan 2011 19:36:27 +0000 (11:36 -0800)
The previous implementation of invalid commit ID checks would
error early when a bad object was detected. Rather than changing
to set +e for the entire routine, we'll capture the output and
do an explicit check for a bad object and throw a useful error
message when it is detected.

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
meta/classes/kernel-yocto.bbclass

index 88dcf32a063b03a8bb0c5ea729ce79ec3011abc4..32d2e20a71bc9e0ea0224b315580926f5c141b4a 100644 (file)
@@ -161,30 +161,30 @@ do_validate_branches() {
        current=`git branch |grep \*|sed 's/^\* //'`
        if [ -n "$target_branch_head" ] && [ "$branch_head" != "$target_branch_head" ]; then
                if [ -n "${KERNEL_REVISION_CHECKING}" ]; then
-                       git show ${target_branch_head} > /dev/null 2>&1
-                       if [ $? -eq 0 ]; then
-                               echo "Forcing branch $current to ${target_branch_head}"
-                               git branch -m $current $current-orig
-                               git checkout -b $current ${target_branch_head}
-                       else
+                       ref=`git show ${target_meta_head} 2>&1 | head -n1 || true`
+                       if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then
                                echo "ERROR ${target_branch_head} is not a valid commit ID."
                                echo "The kernel source tree may be out of sync"
                                exit 1
-                       fi             
+                       else
+                               echo "Forcing branch $current to ${target_branch_head}"
+                               git branch -m $current $current-orig
+                               git checkout -b $current ${target_branch_head}
+                       fi
                fi
        fi
 
        if [ "$meta_head" != "$target_meta_head" ]; then
                if [ -n "${KERNEL_REVISION_CHECKING}" ]; then
-                       git show ${target_meta_head} > /dev/null 2>&1
-                       if [ $? -eq 0 ]; then
-                               echo "Forcing branch meta to ${target_meta_head}"
-                               git branch -m ${KMETA} ${KMETA}-orig
-                               git checkout -b ${KMETA} ${target_meta_head}
-                       else
+                       ref=`git show ${target_meta_head} 2>&1 | head -n1 || true`
+                       if [ "$ref" = "fatal: bad object ${target_meta_head}" ]; then
                                echo "ERROR ${target_meta_head} is not a valid commit ID"
                                echo "The kernel source tree may be out of sync"
                                exit 1
+                       else
+                               echo "Forcing branch meta to ${target_meta_head}"
+                               git branch -m ${KMETA} ${KMETA}-orig
+                               git checkout -b ${KMETA} ${target_meta_head}
                        fi         
                fi
        fi