diff options
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 7 | ||||
-rw-r--r-- | bitbake/lib/bb/tests/fetch.py | 52 |
2 files changed, 58 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index f6f6b63a74..63a9f92b0a 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py | |||
@@ -224,7 +224,12 @@ class Git(FetchMethod): | |||
224 | ud.shallow = False | 224 | ud.shallow = False |
225 | 225 | ||
226 | if ud.usehead: | 226 | if ud.usehead: |
227 | ud.unresolvedrev['default'] = 'HEAD' | 227 | # When usehead is set let's associate 'HEAD' with the unresolved |
228 | # rev of this repository. This will get resolved into a revision | ||
229 | # later. If an actual revision happens to have also been provided | ||
230 | # then this setting will be overridden. | ||
231 | for name in ud.names: | ||
232 | ud.unresolvedrev[name] = 'HEAD' | ||
228 | 233 | ||
229 | ud.basecmd = d.getVar("FETCHCMD_git") or "git -c core.fsyncobjectfiles=0" | 234 | ud.basecmd = d.getVar("FETCHCMD_git") or "git -c core.fsyncobjectfiles=0" |
230 | 235 | ||
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py index 301c468399..484fa58295 100644 --- a/bitbake/lib/bb/tests/fetch.py +++ b/bitbake/lib/bb/tests/fetch.py | |||
@@ -650,6 +650,58 @@ class FetcherLocalTest(FetcherTest): | |||
650 | with self.assertRaises(bb.fetch2.UnpackError): | 650 | with self.assertRaises(bb.fetch2.UnpackError): |
651 | self.fetchUnpack(['file://a;subdir=/bin/sh']) | 651 | self.fetchUnpack(['file://a;subdir=/bin/sh']) |
652 | 652 | ||
653 | def test_local_gitfetch_usehead(self): | ||
654 | # Create dummy local Git repo | ||
655 | src_dir = tempfile.mkdtemp(dir=self.tempdir, | ||
656 | prefix='gitfetch_localusehead_') | ||
657 | src_dir = os.path.abspath(src_dir) | ||
658 | bb.process.run("git init", cwd=src_dir) | ||
659 | bb.process.run("git commit --allow-empty -m'Dummy commit'", | ||
660 | cwd=src_dir) | ||
661 | # Use other branch than master | ||
662 | bb.process.run("git checkout -b my-devel", cwd=src_dir) | ||
663 | bb.process.run("git commit --allow-empty -m'Dummy commit 2'", | ||
664 | cwd=src_dir) | ||
665 | stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir) | ||
666 | orig_rev = stdout[0].strip() | ||
667 | |||
668 | # Fetch and check revision | ||
669 | self.d.setVar("SRCREV", "AUTOINC") | ||
670 | url = "git://" + src_dir + ";protocol=file;usehead=1" | ||
671 | fetcher = bb.fetch.Fetch([url], self.d) | ||
672 | fetcher.download() | ||
673 | fetcher.unpack(self.unpackdir) | ||
674 | stdout = bb.process.run("git rev-parse HEAD", | ||
675 | cwd=os.path.join(self.unpackdir, 'git')) | ||
676 | unpack_rev = stdout[0].strip() | ||
677 | self.assertEqual(orig_rev, unpack_rev) | ||
678 | |||
679 | def test_local_gitfetch_usehead_withname(self): | ||
680 | # Create dummy local Git repo | ||
681 | src_dir = tempfile.mkdtemp(dir=self.tempdir, | ||
682 | prefix='gitfetch_localusehead_') | ||
683 | src_dir = os.path.abspath(src_dir) | ||
684 | bb.process.run("git init", cwd=src_dir) | ||
685 | bb.process.run("git commit --allow-empty -m'Dummy commit'", | ||
686 | cwd=src_dir) | ||
687 | # Use other branch than master | ||
688 | bb.process.run("git checkout -b my-devel", cwd=src_dir) | ||
689 | bb.process.run("git commit --allow-empty -m'Dummy commit 2'", | ||
690 | cwd=src_dir) | ||
691 | stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir) | ||
692 | orig_rev = stdout[0].strip() | ||
693 | |||
694 | # Fetch and check revision | ||
695 | self.d.setVar("SRCREV", "AUTOINC") | ||
696 | url = "git://" + src_dir + ";protocol=file;usehead=1;name=newName" | ||
697 | fetcher = bb.fetch.Fetch([url], self.d) | ||
698 | fetcher.download() | ||
699 | fetcher.unpack(self.unpackdir) | ||
700 | stdout = bb.process.run("git rev-parse HEAD", | ||
701 | cwd=os.path.join(self.unpackdir, 'git')) | ||
702 | unpack_rev = stdout[0].strip() | ||
703 | self.assertEqual(orig_rev, unpack_rev) | ||
704 | |||
653 | class FetcherNoNetworkTest(FetcherTest): | 705 | class FetcherNoNetworkTest(FetcherTest): |
654 | def setUp(self): | 706 | def setUp(self): |
655 | super().setUp() | 707 | super().setUp() |