[bitbake-devel] [PATCH] fetch2/git: allow using 'HEAD' as a branch name

Markus Lehtonen markus.lehtonen at linux.intel.com
Wed Jun 22 09:55:39 UTC 2016


Ping! I haven't seen any comments regarding this one, and, it hasn't
been merged, either.
  - Markus


On Wed, 2016-05-18 at 12:31 +0300, Markus Lehtonen wrote:
> This change makes it possible to e.g. build a currently checked out
> revision of a local Git repository and use AUTOREV. It will be
> possible
> to build HEAD of remote repositories, too, of course, but this is
> probably not that practical.
> 
> In order to use this one must also use the nobranch parameter, i.e.
> have
> 'branch=HEAD;nobranch=1' in the SRC_URI, because 'HEAD' is really not
> a
> Git branch as such. The wording in "branch=HEAD;nobranch=1" is
> probably a
> bit counter-intuitive and illogical but this seems to be the only
> easy
> way to make this work without complicating the fetcher even further.
> Another solution would be e.g. to introduce an alternative 'ref'
> parameter which could be used in place of 'branch' to give any ref.
> The
> effect would basically be the same (with better wording) with yet a
> bit
> more complex fetcher code.
> 
> [YOCTO #9351]
> 
> Signed-off-by: Markus Lehtonen <markus.lehtonen at linux.intel.com>
> ---
>  lib/bb/fetch2/git.py | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
> index 526668b..99d7dc1 100644
> --- a/lib/bb/fetch2/git.py
> +++ b/lib/bb/fetch2/git.py
> @@ -344,12 +344,15 @@ class Git(FetchMethod):
>          output = self._lsremote(ud, d, "")
>          # Tags of the form ^{} may not work, need to fallback to
> other form
>          if ud.unresolvedrev[name][:5] == "refs/":
> -            head = ud.unresolvedrev[name]
> -            tag = ud.unresolvedrev[name]
> +            search_list = [ud.unresolvedrev[name],
> +                           ud.unresolvedrev[name] + "^{}"]
> +        elif ud.unresolvedrev[name] == 'HEAD':
> +            search_list = ['HEAD']
>          else:
>              head = "refs/heads/%s" % ud.unresolvedrev[name]
>              tag = "refs/tags/%s" % ud.unresolvedrev[name]
> -        for s in [head, tag + "^{}", tag]:
> +            search_list = [head, tag + "^{}", tag]
> +        for s in search_list:
>              for l in output.split('\n'):
>                  if s in l:
>                      return l.split()[0]
> -- 
> 2.6.6
> 




More information about the bitbake-devel mailing list