Patchwork [bitbake-devel] fetch/git: Separate out an ls-remote function

login
register
mail settings
Submitter Richard Purdie
Date Feb. 28, 2014, 5:22 p.m.
Message ID <1393608174.31769.199.camel@ted>
Download mbox | patch
Permalink /patch/67743/
State New
Headers show

Comments

Richard Purdie - Feb. 28, 2014, 5:22 p.m.
There is other code which can want to run ls-remote style commands with 
different parameters so split out the function.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
Chris Larson - March 2, 2014, 4:50 a.m.
On Fri, Feb 28, 2014 at 10:22 AM, Richard Purdie <
richard.purdie@linuxfoundation.org> wrote:

> -    def _latest_revision(self, ud, d, name):
> +    def __lsremote(self, ud, d, search):
>

Are we sure we want to use __ here? Double-underscore will trigger python
internal name mangling. While using it doesn't break anything, it doesn't
really buy us much either vs _, and makes inspection of the class/object
rather ugly, IMO :)
Richard Purdie - March 2, 2014, 5:26 p.m.
On Sat, 2014-03-01 at 21:50 -0700, Chris Larson wrote:
> 
> On Fri, Feb 28, 2014 at 10:22 AM, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
>         -    def _latest_revision(self, ud, d, name):
>         +    def __lsremote(self, ud, d, search):
> 
> 
> Are we sure we want to use __ here? Double-underscore will trigger
> python internal name mangling. While using it doesn't break anything,
> it doesn't really buy us much either vs _, and makes inspection of the
> class/object rather ugly, IMO :)
> 
Agreed, I changed it before merging.

Cheers,

Richard

Patch

diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index f7c26b3..1edcee4 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -317,22 +317,30 @@  class Git(FetchMethod):
         """
         return "git:" + ud.host + ud.path.replace('/', '.') + ud.unresolvedrev[name]
 
-    def _latest_revision(self, ud, d, name):
+    def __lsremote(self, ud, d, search):
         """
-        Compute the HEAD revision for the url
+        Run git ls-remote with the specified search string
         """
         if ud.user:
             username = ud.user + '@'
         else:
             username = ""
 
-        cmd = "%s ls-remote %s://%s%s%s refs/heads/%s refs/tags/%s^{}" % \
-              (ud.basecmd, ud.proto, username, ud.host, ud.path, ud.unresolvedrev[name], ud.unresolvedrev[name])
+        cmd = "%s ls-remote %s://%s%s%s %s" % \
+              (ud.basecmd, ud.proto, username, ud.host, ud.path, search)
         if ud.proto.lower() != 'file':
             bb.fetch2.check_network_access(d, cmd)
         output = runfetchcmd(cmd, d, True)
         if not output:
             raise bb.fetch2.FetchError("The command %s gave empty output unexpectedly" % cmd, ud.url)
+        return output
+
+    def _latest_revision(self, ud, d, name):
+        """
+        Compute the HEAD revision for the url
+        """
+        search = "refs/heads/%s refs/tags/%s^{}" % (ud.unresolvedrev[name], ud.unresolvedrev[name])
+        output = self.__lsremote(ud, d, search)
         return output.split()[0]
 
     def _build_revision(self, ud, d, name):