[OE-core] [PATCH] kernel-yocto: Inspect remote branches with git ls-remote
Bruce Ashfield
bruce.ashfield at gmail.com
Wed Mar 5 17:02:27 UTC 2014
Please cc' me directly on any kernel-yocto changes, I only noticed this
by chance.
On Wed, Mar 5, 2014 at 11:49 AM, Matt Fleming <matt at console-pimps.org> wrote:
> From: Matt Fleming <matt.fleming at intel.com>
>
> 'git branch' may use ANSI escape codes in its output (to provide colour)
> which doesn't play well with commands expecting pure plain text, e.g.
>
> fatal: '^[[31mmaster^[[m' is not a valid branch name.
Nasty corner case, one I've never run into .. but that's why the --no-color
option exists. I'd prefer that it be used, and we reduce the footprint of
the change. See below.
>
> Furthermore, the output of 'git branch' is subject to change and trying
> to parse it could potentially lead to breakage in the future.
I've never had a problem with it in 7 years of the tools and their variants, so
the point is arguable and could be dropped from the commit log.
>
> Signed-off-by: Matt Fleming <matt.fleming at intel.com>
> ---
> meta/classes/kernel-yocto.bbclass | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/meta/classes/kernel-yocto.bbclass b/meta/classes/kernel-yocto.bbclass
> index fb8e04e..1115056 100644
> --- a/meta/classes/kernel-yocto.bbclass
> +++ b/meta/classes/kernel-yocto.bbclass
> @@ -196,7 +196,7 @@ do_kernel_checkout() {
> # If KMETA is defined, the branch must exist, but a machine branch
> # can be missing since it may be created later by the tools.
> if [ -n "${KMETA}" ]; then
> - git branch -a | grep -q ${KMETA}
> + git ls-remote --heads 2>/dev/null | awk '{print $NF}' | grep -q ${KMETA}
cut is lighter weight than awk, and doesn't have any variants (like
awk does), so I'd
prefer cut in the pipeline versus awk. Sure that's a preference, but I
support the
class, so I get the pain when it breaks (and it has).
Good catch on the issue, like I said, I've never run into it .. but I
can definitely see
the need for the tweak.
Cheers,
Bruce
> if [ $? -ne 0 ]; then
> echo "ERROR. The branch '${KMETA}' is required and was not"
> echo "found. Ensure that the SRC_URI points to a valid linux-yocto"
> @@ -214,11 +214,11 @@ do_kernel_checkout() {
> fi
>
> # convert any remote branches to local tracking ones
> - for i in `git branch -a | grep remotes | grep -v HEAD`; do
> - b=`echo $i | cut -d' ' -f2 | sed 's%remotes/origin/%%'`;
> - git show-ref --quiet --verify -- "refs/heads/$b"
> + for i in `git ls-remote --heads 2>/dev/null | awk '{print $NF}'`; do
> + b=`echo $i | sed 's%refs/heads/%%'`;
> + git show-ref --quiet --verify -- "$i"
> if [ $? -ne 0 ]; then
> - git branch $b $i > /dev/null
> + git branch $b remotes/origin/$b > /dev/null
> fi
> done
>
> --
> 1.8.5.3
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
--
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"
More information about the Openembedded-core
mailing list