Patchtest fails when oe-core git repo is in a "detached HEAD" state:
Error log:
> File "/usr/lib/python3/dist-packages/git/repo/base.py", line 881, in
active_branch return self.head.reference ^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3/dist-packages/git/refs/symbolic.py", line 311, in
_get_reference raise TypeError("%s is a detached symbolic reference as it
points to %r" % (self, sha)) TypeError: HEAD is a detached symbolic reference
as it points to '
3dd31d3b29730fa1130645d76bb71914ac036335' None
In this case, no current branch is available for the clean operation.
To fix this, updates the checkout logic:
- if a current branch is available, use it,
- otherwise, fall back to the commit pointed to by HEAD.
This ensures that the script works correctly even when HEAD is detached.
Signed-off-by: Naftaly RALAMBOARIVONY <naftaly.ralamboarivony@smile.fr>
Reviewed-by: Yoann Congal <yoann.congal@smile.fr>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
self.repodir = repodir
self.repo = git.Repo.init(repodir)
self.patch = mbox.PatchSeries(patch)
- self.current_branch = self.repo.active_branch.name
+
+ if self.repo.head.is_detached:
+ self.current_commit = self.repo.head.commit.hexsha
+ self.current_branch = None
+ else:
+ self.current_branch = self.repo.active_branch.name
# targeted branch defined on the patch may be invalid, so make sure there
# is a corresponding remote branch
self._patchmerged = True
def clean(self):
- self.repo.git.execute(['git', 'checkout', self.current_branch])
+ self.repo.git.execute(['git', 'checkout', self.current_branch if self.current_branch else self.current_commit])
self.repo.git.execute(['git', 'branch', '-D', self._workingbranch])
self._patchmerged = False