diff mbox series

fetch2/git: Only fetch extra shallow refs that exist

Message ID 20260620174416.1489364-1-pkj@axis.com
State New
Headers show
Series fetch2/git: Only fetch extra shallow refs that exist | expand

Commit Message

Peter Kjellerstedt June 20, 2026, 5:44 p.m. UTC
When using BB_GIT_SHALLOW_EXTRA_REFS in combination with a recipe that
fetches multiple URLs, make sure to only fetch the references that exist
in the respective remote repositories.

Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
---
 lib/bb/fetch2/git.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mathieu Dubois-Briand June 23, 2026, 8:07 a.m. UTC | #1
On Sat Jun 20, 2026 at 7:44 PM CEST, Peter Kjellerstedt via lists.openembedded.org wrote:
> When using BB_GIT_SHALLOW_EXTRA_REFS in combination with a recipe that
> fetches multiple URLs, make sure to only fetch the references that exist
> in the respective remote repositories.
>
> Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
> ---

Hi Peter,

I suspect this is breaking the GitShallowTest bitbake selftest:

ERROR: test_shallow_extra_refs (bb.tests.fetch.GitShallowTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/srv/pokybuild/yocto-worker/oe-selftest-armhost/build/layers/bitbake/lib/bb/tests/fetch.py", line 2250, in test_shallow_extra_refs
    self.assertRefs(['master', 'origin/master', 'origin/a_branch'])
  File "/srv/pokybuild/yocto-worker/oe-selftest-armhost/build/layers/bitbake/lib/bb/tests/fetch.py", line 1866, in assertRefs
    full_expected = self.git(['rev-parse', '--symbolic-full-name'] + expected_refs, cwd=cwd).splitlines()
  File "/srv/pokybuild/yocto-worker/oe-selftest-armhost/build/layers/bitbake/lib/bb/tests/fetch.py", line 438, in git
    return bb.process.run(cmd, cwd=cwd)[0]
  File "/srv/pokybuild/yocto-worker/oe-selftest-armhost/build/layers/bitbake/lib/bb/process.py", line 189, in run
    raise ExecutionError(cmd, pipe.returncode, stdout, stderr)
bb.process.ExecutionError: Execution of 'git -c safe.bareRepository=all rev-parse --symbolic-full-name master origin/master origin/a_branch' failed with exit code 128:
fatal: ambiguous argument 'origin/a_branch': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
refs/heads/master
refs/remotes/origin/master
origin/a_branch

https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/4178
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/4119
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/3949

Can you have a look at the issue?

Thanks,
Mathieu
diff mbox series

Patch

diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index 0fbd85441..3f723ca62 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -640,7 +640,7 @@  class Git(FetchMethod):
             if '*' in r:
                 matches = filter(lambda a: fnmatch.fnmatchcase(a, r), all_refs)
                 extra_refs.extend(matches)
-            else:
+            elif r in all_refs:
                 extra_refs.append(r)
 
         for ref in extra_refs: