aboutsummaryrefslogtreecommitdiff
path: root/contrib/gcc-changelog/git_check_commit.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc-changelog/git_check_commit.py')
-rwxr-xr-xcontrib/gcc-changelog/git_check_commit.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/contrib/gcc-changelog/git_check_commit.py b/contrib/gcc-changelog/git_check_commit.py
new file mode 100755
index 0000000..935425e
--- /dev/null
+++ b/contrib/gcc-changelog/git_check_commit.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>. */
+
+import argparse
+
+from git_repository import parse_git_revisions
+
+parser = argparse.ArgumentParser(description='Check git ChangeLog format '
+ 'of a commit')
+parser.add_argument('revisions', default='HEAD', nargs='?',
+ help='Git revisions (e.g. hash~5..hash or just hash)')
+parser.add_argument('-g', '--git-path', default='.',
+ help='Path to git repository')
+parser.add_argument('-p', '--print-changelog', action='store_true',
+ help='Print final changelog entires')
+parser.add_argument('-n', '--non-strict-mode', action='store_true',
+ help='Use non-strict mode (allow changes in ChangeLog and '
+ 'other automatically updated files).')
+args = parser.parse_args()
+
+retval = 0
+for git_commit in parse_git_revisions(args.git_path, args.revisions,
+ not args.non_strict_mode):
+ res = 'OK' if git_commit.success else 'FAILED'
+ print('Checking %s: %s' % (git_commit.original_info.hexsha, res))
+ if git_commit.success:
+ if args.print_changelog:
+ git_commit.print_output()
+ else:
+ for error in git_commit.errors:
+ print('ERR: %s' % error)
+ retval = 1
+
+exit(retval)