diff mbox series

[blacksail,44/60] oe.patch: fix Git note identity in commitIgnored

Message ID 79609753a4c670406715f60df30aa9475d80de5b.1793867929.git.yoann.congal@smile.fr
State RFC, archived
Delegated to: Yoann Congal
Headers show
Series [blacksail,01/60] gstreamer1.0-plugins-bad: use gtk+3 dependency name | expand

Commit Message

Yoann Congal Nov. 5, 2026, 8:43 a.m. UTC
From: Roy Cohen <roy@0xbadcaffe.dev>

GitApplyTree.commitIgnored() passes the Git user name and email
as positional arguments to addNote(), incorrectly assigning them
to value and commituser.

Pass these as keyword arguments to ensure Git notes can be created
without relying on global Git configuration.

Add a regression test verifying the note content and Git identity.

Fixes [YOCTO #15989]

Signed-off-by: Roy Cohen <roy@0xbadcaffe.dev>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
(cherry picked from commit f3e5fcda44e6a4b4d047d4f276b4cdb7b4e6346f)
Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
---
 meta/lib/oe/patch.py                        |  2 +-
 meta/lib/oeqa/selftest/cases/oelib/patch.py | 46 +++++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 2277e8835d5..f8fc63ac006 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -520,7 +520,7 @@  class GitApplyTree(PatchTree):
         GitApplyTree.gitCommandUserOptions(cmd, d=d)
         cmd += ["commit", "-m", subject, "--no-verify", "--no-gpg-sign"]
         runcmd(cmd, dir)
-        GitApplyTree.addNote(dir, "HEAD", GitApplyTree.ignore_commit, d.getVar('PATCH_GIT_USER_NAME'), d.getVar('PATCH_GIT_USER_EMAIL'))
+        GitApplyTree.addNote(dir, "HEAD", GitApplyTree.ignore_commit, commituser=d.getVar('PATCH_GIT_USER_NAME'), commitemail=d.getVar('PATCH_GIT_USER_EMAIL'))
 
     @staticmethod
     def extractPatches(tree, startcommits, outdir, paths=None):
diff --git a/meta/lib/oeqa/selftest/cases/oelib/patch.py b/meta/lib/oeqa/selftest/cases/oelib/patch.py
index 8492549764b..1b7d17813e0 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/patch.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/patch.py
@@ -10,6 +10,7 @@  import subprocess
 import sys
 import tempfile
 from unittest.case import TestCase
+from unittest.mock import patch
 
 import oe.patch
 
@@ -280,3 +281,48 @@  class TestGitApplyTree(TestCase):
                 "2021-01-01T12:34:56Z",
             ))
             self.assert_note_and_extract(repo, patchname, "+plain diff change")
+
+    def test_commit_ignored_uses_explicit_identity(self):
+        with tempfile.TemporaryDirectory(prefix="oe-gitapply-note-") as tmpdir:
+            repo = self.make_repo(tmpdir, "source")
+
+            self.git(repo, "config", "--local", "--unset", "user.name")
+            self.git(repo, "config", "--local", "--unset", "user.email")
+
+            with open(os.path.join(repo, "file.txt"), "a") as f:
+                f.write("generated change\n")
+
+            env = {
+                "PATH": os.environ.get("PATH", os.defpath),
+                "HOME": tmpdir,
+                "GIT_CONFIG_GLOBAL": os.devnull,
+                "GIT_CONFIG_NOSYSTEM": "1",
+            }
+
+            with patch.dict(os.environ, env, clear=True):
+                oe.patch.GitApplyTree.commitIgnored(
+                    "Add generated changes",
+                    dir=repo,
+                    files=["file.txt"],
+                    d=PatchTestDataStore(tmpdir),
+                )
+
+                note = oe.patch.runcmd([
+                    "git", "notes", "--ref",
+                    oe.patch.GitApplyTree.notes_ref,
+                    "show", "HEAD",
+                ], repo)
+
+                identity = oe.patch.runcmd([
+                    "git", "log", "-1",
+                    "--format=%an%n%ae%n%cn%n%ce",
+                    oe.patch.GitApplyTree.notes_ref,
+                ], repo).splitlines()
+
+            self.assertEqual(note.strip(), oe.patch.GitApplyTree.ignore_commit)
+            self.assertEqual(identity, [
+                "OE Test",
+                "oe-test@example.com",
+                "OE Test",
+                "oe-test@example.com",
+            ])