[bitbake-devel] [PATCH] fetch/git: fix per-branch unpacking
David Vincent
freesilicon at gmail.com
Mon Oct 16 21:48:03 UTC 2017
Create branches for each user-supplied name when running checkout and
set start point of branch to the resolved revision.
Signed-off-by: David Vincent <freesilicon at gmail.com>
---
lib/bb/fetch2/git.py | 12 +++++++-----
lib/bb/tests/fetch.py | 27 +++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 5 deletions(-)
diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index 5ef8cd69..e71551ff 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -482,11 +482,13 @@ class Git(FetchMethod):
workdir=destdir)
runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d, workdir=destdir)
elif not ud.nobranch:
- branchname = ud.branches[ud.names[0]]
- runfetchcmd("%s checkout -B %s %s" % (ud.basecmd, branchname, \
- ud.revisions[ud.names[0]]), d, workdir=destdir)
- runfetchcmd("%s branch %s --set-upstream-to origin/%s" % (ud.basecmd, branchname, \
- branchname), d, workdir=destdir)
+ for idx, name in enumerate(ud.names):
+ checkoutcmd = 'checkout -B' if not idx else 'branch -f'
+ branchname = ud.branches[name]
+ runfetchcmd("%s %s %s %s" % (ud.basecmd, checkoutcmd, branchname, \
+ ud.revisions[name]), d, workdir=destdir)
+ runfetchcmd("%s branch %s --set-upstream-to origin/%s" % (ud.basecmd, branchname, \
+ branchname), d, workdir=destdir)
else:
runfetchcmd("%s checkout %s" % (ud.basecmd, ud.revisions[ud.names[0]]), d, workdir=destdir)
diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
index 209b13f6..217cd88b 100644
--- a/lib/bb/tests/fetch.py
+++ b/lib/bb/tests/fetch.py
@@ -647,6 +647,33 @@ class FetcherNetworkTest(FetcherTest):
self.d.setVar("PREMIRRORS", "%s git://%s;protocol=file \n" % (dummyurl, self.sourcedir))
self.gitfetcher(dummyurl, dummyurl)
+ def test_gitfetch_multi_one_uri(self):
+ rev = "be393f247a08c0a4a50a6a76b8fd57f78295d2a1"
+ rev1 = "85596c9af3bb6407159c6c8de229cbe275aa74ea"
+ rev2 = "28249c42701f9156a0b3153d72d7e46dacab37cb"
+ self.d.setVar("SRCREV_rev1", rev1)
+ self.d.setVar("SRCREV_rev2", rev2)
+ url = "git://git.openembedded.org/bitbake;name=rev1,rev2;branch=1.34,1.36"
+ fetcher = bb.fetch.Fetch([url], self.d);
+ fetcher.download()
+ fetcher.unpack(self.unpackdir)
+ stdout = bb.process.run("git rev-parse master",
+ cwd=os.path.join(self.unpackdir, "git"))
+ unpack_rev = stdout[0].strip()
+ self.assertEqual(unpack_rev, rev);
+ stdout = bb.process.run("git rev-parse HEAD",
+ cwd=os.path.join(self.unpackdir, "git"))
+ unpack_rev = stdout[0].strip()
+ self.assertEqual(unpack_rev, rev1);
+ stdout = bb.process.run("git rev-parse 1.34",
+ cwd=os.path.join(self.unpackdir, "git"))
+ unpack_rev = stdout[0].strip()
+ self.assertEqual(unpack_rev, rev1);
+ stdout = bb.process.run("git rev-parse 1.36",
+ cwd=os.path.join(self.unpackdir, "git"))
+ unpack_rev = stdout[0].strip()
+ self.assertEqual(unpack_rev, rev2);
+
def test_git_submodule(self):
fetcher = bb.fetch.Fetch(["gitsm://git.yoctoproject.org/git-submodule-test;rev=f12e57f2edf0aa534cf1616fa983d165a92b0842"], self.d)
fetcher.download()
--
2.14.2
More information about the bitbake-devel
mailing list