On 5/14/20 2:42 PM, Martin Liška wrote:
Hello.
I'm sending patch candidate that adds 2 new git aliases:
- gcc-backport - simple alias to 'git cherry-pick -x'
- gcc-revert - it similarly appends '(this reverts commit
365e3cde4978c6a7dbfa50865720226254c016be)'
to a reverted commit message
The script normally parses content of a git message and adds corresponding
'Revert:' or
'Backport from master:' lines. Right now, there's missing date of the original
commit and
author. I hope it's acceptable.
Thoughts?
Martin
Hello.
I'm going to install the following patch that will allow '(cherry picked from
commit hash)' line.
Generated ChangeLog entry will look the same as the original one (No Backported
from leading lines).
Apart from that, I'm adding 'git gcc-backport' which is simple alias for
'cherry-pick -x'.
Martin
>From 5394cd8d0ec4aa774228bff1687cdace5cdc7552 Mon Sep 17 00:00:00 2001
From: Martin Liska <mli...@suse.cz>
Date: Wed, 20 May 2020 09:49:48 +0200
Subject: [PATCH] Add gcc-backport and support git cherry pick.
Unknown ChangeLog:
2020-05-20 Martin Liska <mli...@suse.cz>
* contrib/gcc-changelog/git_commit.py: Support cherry pick
prefix.
* contrib/gcc-changelog/test_email.py: Test it.
* contrib/gcc-changelog/test_patches.txt: Add new patch.
* contrib/gcc-git-customization.sh: Add gcc-backport.
---
contrib/gcc-changelog/git_commit.py | 3 +++
contrib/gcc-changelog/test_email.py | 4 ++++
contrib/gcc-changelog/test_patches.txt | 29 ++++++++++++++++++++++++++
contrib/gcc-git-customization.sh | 1 +
4 files changed, 37 insertions(+)
diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
index f6b9c5b1586..5cc8c4f5935 100755
--- a/contrib/gcc-changelog/git_commit.py
+++ b/contrib/gcc-changelog/git_commit.py
@@ -150,6 +150,7 @@ star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
LINE_LIMIT = 100
TAB_WIDTH = 8
CO_AUTHORED_BY_PREFIX = 'co-authored-by: '
+CHERRY_PICK_PREFIX = '(cherry picked from commit '
class Error:
@@ -349,6 +350,8 @@ class GitCommit:
author = self.format_git_author(name)
self.co_authors.append(author)
continue
+ elif line.startswith(CHERRY_PICK_PREFIX):
+ continue
# ChangeLog name will be deduced later
if not last_entry:
diff --git a/contrib/gcc-changelog/test_email.py b/contrib/gcc-changelog/test_email.py
index 03abc763212..5e99d3240e8 100755
--- a/contrib/gcc-changelog/test_email.py
+++ b/contrib/gcc-changelog/test_email.py
@@ -258,3 +258,7 @@ class TestGccChangelog(unittest.TestCase):
email = self.from_patch_glob('0020-IPA-Avoid')
assert (email.errors[0].message
== 'first line should start with a tab, asterisk and space')
+
+ def test_cherry_pick_format(self):
+ email = self.from_patch_glob('0001-c-Alias.patch')
+ assert not email.errors
diff --git a/contrib/gcc-changelog/test_patches.txt b/contrib/gcc-changelog/test_patches.txt
index 39e4753c0ab..ec667be9a92 100644
--- a/contrib/gcc-changelog/test_patches.txt
+++ b/contrib/gcc-changelog/test_patches.txt
@@ -2382,3 +2382,32 @@ index 00000000000..66c87d48694
--
2.26.1
+=== 0001-c-Alias.patch ===
+From 3f1a149fc35cdba988464562e2fb824b10652d6b Mon Sep 17 00:00:00 2001
+From: Nathan Sidwell <nat...@acm.org>
+Date: Tue, 19 May 2020 13:29:19 -0700
+Subject: [PATCH] c++: Alias template instantiation template info
+
+I discovered that the alias instantiation machinery would setup
+template_info, and then sometime later overwrite that with equivalent
+info. This broke modules, because the template info, once set, is
+logically immutable. Let's just not do that.
+
+ * pt.c (lookup_template_class_1): Do not reinit template_info of an
+ alias here.
+
+(cherry picked from commit 74744bb1f2847b5b9ce3e97e0fec9c23bb0e499f)
+---
+ gcc/cp/pt.c | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
+index b8f03d18541..7230ac724ba 100644
+--- a/gcc/cp/pt.c
++++ b/gcc/cp/pt.c
+@@ -1 +1,2 @@
+
++
+--
+2.26.2
+
diff --git a/contrib/gcc-git-customization.sh b/contrib/gcc-git-customization.sh
index 91d378ba32a..7a950ae5f38 100755
--- a/contrib/gcc-git-customization.sh
+++ b/contrib/gcc-git-customization.sh
@@ -26,6 +26,7 @@ git config alias.gcc-descr \!"f() { if test \${1:-no} = --full; then c=\${2:-mas
git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f"
git config alias.gcc-verify '!f() { "`git rev-parse --show-toplevel`/contrib/gcc-changelog/git_check_commit.py" $@; } ; f'
+git config alias.gcc-backport '!f() { rev=$1; git cherry-pick -x $@; } ; f'
git config alias.gcc-mklog '!f() { "`git rev-parse --show-toplevel`/contrib/mklog.py" $@; } ; f'
--
2.26.2