All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fetch2/git: allow using 'HEAD' as a branch name
@ 2016-05-18  9:31 Markus Lehtonen
  2016-06-22  9:55 ` Markus Lehtonen
  0 siblings, 1 reply; 4+ messages in thread
From: Markus Lehtonen @ 2016-05-18  9:31 UTC (permalink / raw)
  To: bitbake-devel

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



^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [PATCH] fetch2/git: allow using 'HEAD' as a branch name
@ 2016-08-03 14:06 Markus Lehtonen
  0 siblings, 0 replies; 4+ messages in thread
From: Markus Lehtonen @ 2016-08-03 14:06 UTC (permalink / raw)
  To: bitbake-devel

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@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 4e2dcec..0c07d64 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -388,12 +388,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.strip().split('\n'):
                 sha1, ref = l.split()
                 if s == ref:
-- 
2.6.6



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-08-03 14:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-18  9:31 [PATCH] fetch2/git: allow using 'HEAD' as a branch name Markus Lehtonen
2016-06-22  9:55 ` Markus Lehtonen
2016-07-11 14:15   ` Cliff Brake
  -- strict thread matches above, loose matches on Subject: below --
2016-08-03 14:06 Markus Lehtonen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.