gcc-changelog: Allow modifications to old ChangeLogs without entry
authorMartin Liska <mliska@suse.cz>
Wed, 13 Jan 2021 10:55:29 +0000 (11:55 +0100)
committerMartin Liska <mliska@suse.cz>
Wed, 13 Jan 2021 10:57:14 +0000 (11:57 +0100)
contrib/ChangeLog:

* gcc-changelog/git_commit.py: Allow modifications of older
ChangeLog (or specific) files without need to make a ChangeLog
entry.
* gcc-changelog/test_email.py: Test it.
* gcc-changelog/test_patches.txt: Add new patch.

contrib/gcc-changelog/git_commit.py
contrib/gcc-changelog/test_email.py
contrib/gcc-changelog/test_patches.txt

index ee1973371be47315dccdb1dbdd177482f35e3c44..59f478670d7d97447f312532323ed53fcbc1eb21 100755 (executable)
@@ -308,7 +308,7 @@ class GitCommit:
             self.info = self.commit_to_info_hook(self.revert_commit)
 
         project_files = [f for f in self.info.modified_files
-                         if self.is_changelog_filename(f[0])
+                         if self.is_changelog_filename(f[0], allow_suffix=True)
                          or f[0] in misc_files]
         ignored_files = [f for f in self.info.modified_files
                          if self.in_ignored_location(f[0])]
@@ -343,8 +343,14 @@ class GitCommit:
         return [x[0] for x in self.info.modified_files if x[1] == 'A']
 
     @classmethod
-    def is_changelog_filename(cls, path):
-        return path.endswith('/ChangeLog') or path == 'ChangeLog'
+    def is_changelog_filename(cls, path, allow_suffix=False):
+        basename = os.path.basename(path)
+        if basename == 'ChangeLog':
+            return True
+        elif allow_suffix and basename.startswith('ChangeLog'):
+            return True
+        else:
+            return False
 
     @classmethod
     def find_changelog_location(cls, name):
index 5db56caef9e16a97cf7bcd4ed63f0e94dc19dd63..532ed6a79831ab3b8f50afc663bc5ccd3fd5f083 100755 (executable)
@@ -404,3 +404,7 @@ class TestGccChangelog(unittest.TestCase):
         email = self.from_patch_glob('0001-Add-horse2.patch')
         assert not email.errors
         assert email.changelog_entries[0].files == ['koníček.txt']
+
+    def test_modification_of_old_changelog(self):
+        email = self.from_patch_glob('0001-fix-old-ChangeLog.patch')
+        assert not email.errors
index ffd13682d5ce541f0bc96f82dab0835f1714f8fc..6b75e488903baf47f0e478f34f58081bcd990a8e 100644 (file)
@@ -3398,4 +3398,24 @@ index 00000000000..56c67f58752
 -- 
 2.29.2
 
+=== 0001-fix-old-ChangeLog.patch ===
+From fd498465b2801203089616be9a0e3c1f4fc065a0 Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 13 Jan 2021 11:45:37 +0100
+Subject: [PATCH] Fix a changelog.
+
+---
+ gcc/ChangeLog-2020 | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/gcc/ChangeLog-2020 b/gcc/ChangeLog-2020
+index 6553720acad..2c170ef014a 100644
+--- a/gcc/ChangeLog-2020
++++ b/gcc/ChangeLog-2020
+@@ -1 +1,2 @@
++
+-- 
+2.29.2