diff --git a/modules/steps.py b/modules/steps.py
index 835cb60..e678a4b 100644
--- a/modules/steps.py
+++ b/modules/steps.py
@@ -98,10 +98,16 @@ def _get_changelog(pn, workdir):
 
 def _append_changelog_to_commit_msg(group, opts):
     max_len = int(opts['changelog_max_len'])
+    seen = set()
     for p in group['pkgs']:
         if 'changelog_text' not in p:
             continue
         text = p['changelog_text'].strip()
+        # Group recipes may share a source and produce identical changelogs
+        # (e.g. mesa, mesa-native); skip proven duplicates, keep the rest.
+        if text in seen:
+            continue
+        seen.add(text)
         if len(text) > max_len:
             text = (text[:max_len] + "\n\n[Changelog truncated as it exceeds {} characters; \n"
                     "the full changelog can be found in an attachment to the AUH email]".format(max_len))
