patchtest: check for untracked changes

[YOCTO #15243]

Avoid overwriting local changes when running patchtest by checking for
anything unstaged or uncommitted in the target repo, and logging an
error if something is found. This will provide the user helpful feedback
if (for example) they forgot to commit a change for their patch under
test, and will leave the target repository in a reasonable state (rather
than a temporary branch created by patchtest).

(From OE-Core rev: 2cc2dda6c3d5a97173b3fc434cc16ff2a930f43f)

Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Trevor Gamblin 2023-10-19 09:47:10 -04:00 committed by Richard Purdie
parent dfb7d2c426
commit 4ba54e29ff

View File

@ -171,6 +171,12 @@ def main():
log_path = None
patch_list = None
git_status = os.popen("(cd %s && git status)" % PatchTestInput.repodir).read()
status_matches = ["Changes not staged for commit", "Changes to be committed"]
if any([match in git_status for match in status_matches]):
logger.error("patchtest: there are uncommitted changes in the target repo that would be overwritten. Please commit or restore them before running patchtest")
return 1
if os.path.isdir(patch_path):
patch_list = [os.path.join(patch_path, filename) for filename in os.listdir(patch_path)]
else: